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

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务