可以帮我看看为什么不通过吗?

#include <iostream>
//#include <fstream>
#include <cstdio>
#include <cstdlib>

using namespace std;
int main()
{

int n=0;

int a[n];
int b[n];
int g[n];
int k[n];
int x=0,y=0;
scanf("%d",&n);
//cin>>n;

for (int j=0;j<n;j++)
{
scanf("%d%d%d%d",&a[j],&b[j],&g[j],&k[j]);
//cin>>a[j]>>b[j]>>g[j]>>k[j];
}
scanf("%d%d",&x,&y);
//cin>>x>>y;

int i=n-1;
bool t=1;
while (1)
{
if ((x>=a[i])&&(x<=a[i]+g[i])&&(y>=b[i])&&(y<=b[i]+k

[i]))
{
t=0;
i++;
printf("%d",i);
//cout<<i+1;
break;
}
i--;

}
if (t) printf("%d",-1);//cout<<(-1);
return 0;
}

2 条评论

  • @ 2015-10-21 22:06:58

    动态内存分配不是这么用的吧。而且非常量是不能作为数组大小的,你这估计CE吧?
    依稀记得是int *a=new int[n];//n已经输入
    记得delete[] a;
    不过NOIP尽量不要动态内存分配

  • @ 2015-10-21 08:34:31

    至少我觉得从最开始就有问题了
    int n=0;
    int a[n];
    int b[n];
    int g[n];
    int k[n];
    这样数组就只有0个元素,相当于没开数组
    后面的还没看

  • 1

信息

ID
1736
难度
4
分类
搜索 | 枚举 点击显示
标签
递交数
4969
已通过
2205
通过率
44%
被复制
14
上传者