题解 P1003 【铺地毯】

· · 题解

#include<cstdio>//很多人都用二次数组做的,给你们一套新思路 
using namespace std;
inline void in(int &s){//快读 
    char c=getchar();s=0;
    while(c<'0' || c>'9') c=getchar();
    while(c>='0' && c<='9'){
        s=(s<<1)+(s<<3)+c-'0';
        c=getchar();
}
}
int n,a,b,g,k,x,y,a1[10002],b1[10002],c1[10002],d1[10002],ans;
int main(){
    in(n);
    for(int i=0;i<n;++i){
        in(a);in(b);in(g);in(k);
        a1[i]=a;b1[i]=a+g;c1[i]=b;d1[i]=b+k;//求矩形上下边的Y值,左右边的x值 
    }
    in(x);in(y);
    for(int i=0;i<n;++i)
        if(x>=a1[i] && x<=b1[i] && y>=c1[i] && y<=d1[i]) ans=i+1;//如果这点包括在矩形边界内,就替换。 
    if(ans>0) printf("%d",ans);
    else printf("-1");
    return 0;
}