铺地毯
思维题:将每个地毯的数据按序储存起来,根据点边判断目标点是否在此地毯下,依次记录,然后输出即可
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;
}