你外面`const int n`,`main`函数里面有定义了`n`我觉得有问题
by ZackofZHOU @ 2023-12-19 21:50:43
这不会CE吗?
by ZackofZHOU @ 2023-12-19 21:51:14
@[ZackofZHOU](/user/948216) 改了后还是过不了怎么办
by simple1first @ 2023-12-25 22:02:29
@[simple1first](/user/1124986) 那我也不知道了
by ZackofZHOU @ 2023-12-26 21:24:13
@[simple1first](/user/1124986)
问题在这里 下面是有问题的原代码
```
for(int i=0;i<n;i++){
cin >> a >> b >> g >> k;
dt[i] = {a ,b ,a+g-1 ,b+k-1};
}
for(int i=n;i>=1;i--){
if(dt[i].x1<=x && x<=dt[i].x2 && dt[i].y1<=y && y<=dt[i].y2){
ans = i;
break;
}
}
```
对于输入是从下标为0的位置 到下标为n-1的位置 而遍历时却从下标为n的位置开始,导致最后一个位置的地毯没有被考虑到
修改后代码在这 已经AC 请放心食用
```
#include<bits/stdc++.h>
using namespace std;
const int maxn = 2e5+3;
struct dt{
int x1,y1,x2,y2;
}dt[maxn];
int main(){
int n,a,b,g,k,x,y,ans;
cin >> n;
for(int i=1;i<=n;i++){
cin >> a >> b >> g >> k;
dt[i] = {a ,b ,a+g-1 ,b+k-1};
}
cin >> x >>y;
for(int i=n;i>=1;i--){
if(dt[i].x1<=x && x<=dt[i].x2 && dt[i].y1<=y && y<=dt[i].y2){
ans = i;
break;
}
}
if(ans!=0) cout << ans;
else cout << "-1";
return 0;
}
```
by taoyize @ 2023-12-26 21:41:47
@[taoyize](/user/1097100) 谢谢大佬
by simple1first @ 2023-12-28 21:18:01