铺地毯

思维题:将每个地毯的数据按序储存起来,根据点边判断目标点是否在此地毯下,依次记录,然后输出即可

c++ AC代码:

正:

#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
int main() {
    int n;cin >> n;
    vector<pair<int,int>>st(n),sd(n);
    for(int i = 0;i < n;i ++){
        cin >> st[i].fi >> st[i].se >> sd[i].fi >> sd[i].se;
    }
    int x , y , ans = 0;
    cin >> x >> y;
    for(int i = 0;i < n;i ++){
        if(x >= st[i].fi && x <= st[i].fi + sd[i].fi)
        if(y >= st[i].se && y <= st[i].se + sd[i].se)
        ans = i + 1;
    }if(!ans) {cout << -1;return 0;}
    cout << ans;
    
    return 0;
}

反:

#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
int main() {
    int n;cin >> n;
    vector<pair<int,int>>st(n),sd(n);
    for(int i = 0;i < n;i ++){
        cin >> st[i].fi >> st[i].se >> sd[i].fi >> sd[i].se;
    }
    int x , y , ans = 0;
    cin >> x >> y;
    for(int i = n - 1;i >= 0;i --){
        if(x >= st[i].fi && x <= st[i].fi + sd[i].fi)
        if(y >= st[i].se && y <= st[i].se + sd[i].se)
        {cout << i + 1;return 0;}
    }
    cout << -1;
    
    return 0;
}