内存限制超过256 MB?为什么?

时间:2017-07-16 15:26:56

标签: c++11

我在codeforces here上解决了这个问题,代码显示正确的答案,但它超出了网站的内存限制。我无法弄清楚为什么。也尝试使用矢量,但它不起作用。

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n,a,b,c,deny=0;
    int groups[n];
    scanf("%d %d %d",&n,&a,&b);


    for(int i=0;i<n;i++){
        cin>>groups[i];
        }

    int two_one=b*2;
    //two kinds of tables:one seater,2 seater
    //find no of ppl denied service
    for(int j=0;j<n;j++){
        if(groups[j]==1 and a!=0){
            a-=1;   
        }
        else if(groups[j]==1 and a==0){
            two_one-=1;
            b-=1;


        }
        else if(groups[j]==1 and a==0 and two_one==0){
            deny+=1;
        }
        else if(groups[j]==2 and b!=0){
            b-=1;
        }
        else if(groups[j]==2 and b==0){
            deny+=2;
        }
    }
    printf("%d",deny);
    return 0;
}

1 个答案:

答案 0 :(得分:2)

看起来你正在尝试在读取数据之前分配一个数组:

int n,a,b,c,deny=0; // <------ Unknown n value
int groups[n]; // <----- Allocation of array of n: undefined behavior
scanf("%d %d %d",&n,&a,&b); // <------ Reading 'groups' size

只需交换最后两行。

编辑:根据C ++标准,你应该使用向量:

int n,a,b,c,deny=0;
scanf("%d %d %d",&n,&a,&b);
std::vector<int> groups(n);