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