CSP题解|201403-2 窗口|100分
#include <bits/stdc++.h>
using namespace std;
class win{
public:
int lx;
int ly;
int rx;
int ry;
int position;
win(int a,int b,int c,int d,int p){
lx=a;
ly=b;
rx=c;
ry=d;
position = p;
}
};
int main() {
//CSP-201403-2-window
int winNum,clickNum;
cin>>winNum>>clickNum;//输入窗口数和点击数
//开始输入窗口
vector<win>v;
for(int i =0;i<winNum;i++){
int a,b,c,d;
cin>>a>>b>>c>>d;
win w(a,b,c,d,i+1);
v.push_back(w);
}
//输入点击区域
for(int i =0;i<clickNum;i++){
int x,y;
cin>>x>>y;
//从后往前遍历v
bool isFind=false;
for(int i =winNum-1;i>=0;i--){
//发现该窗口
if(v[i].lx<=x && v[i].rx>=x && v[i].ly<=y && v[i].ry>=y){
// cout<<"命中坐标上下界";v[i].say();
cout<<v[i].position<<endl;
isFind=true;
//把该元素放到第一位
win temp = v[i];
v.erase(v.begin()+i);
v.push_back(temp);
break;
}
}
if(!isFind)cout<<"IGNORED"<<endl;
}
}
题目没有描述清楚,要输出position(按刚开始输入,且不会改变)而不是i

查看3道真题和解析