说明
看标签 枚举,模拟,暴力。
很容易想到开一个大小N * N 的二维数组,然而数据范围是0 ≤ N ≤10,000
数组大小:10000 * 10000 = 100000000 Byte = 100000 KB = 100MB
刚好跨过了RE与MLE的红线。
另外一种方法是用四个数组来记录长方形的四个参数,再扫一遍检查最上面的地毯。
亲测,完美AC。
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| #include<stdio.h>
const int MAXN = 10000 + 5;
int a[MAXN], b[MAXN], g[MAXN], k[MAXN];
int main() { int n, x, y; scanf("%d", &n); for(int i = 0; i < n; i++) { scanf("%d%d%d%d", &a[i], &b[i], &g[i], &k[i]); } scanf("%d%d", &x, &y); int ans = -1; for(int i = 0; i < n; i++) { if(x >= a[i] && y >= b[i] && x <= a[i] + g[i] && y <= b[i] + k[i]) { ans = i + 1; } } printf("%d\n", ans); return 0; }
|