CCF 201403-2 窗口
#include<iostream>
#include<list>
#include<stdlib.h>
using namespace std;
struct Node
{
int X1;
int X2;
int Y1;
int Y2;
int num;
};
int main()
{
int n =0;int m =0;
cin>>n>>m;
list<Node*>lst;
Node* pNode =NULL;
int x1 =0;
int x2 =0;
int y1 =0;
int y2 =0;
for(int i=0;i<n;i++)
{
pNode = new Node;
cin>>x1>>y1>>x2>>y2;
pNode->X1 = x1;
pNode->X2 = x2;
pNode->Y1 =y1;
pNode->Y2 = y2;
pNode->num =i+1;
lst.push_front(pNode);
}
int *a = (int*)malloc(sizeof(int)*m*2);
for(int i =0;i<m*2;i+=2)
{
cin>>a[i]>>a[i+1];
}
for(int i =0;i<m*2;i+=2)
{
auto ite = lst.begin();
while(ite != lst.end() && !( (*ite)->X1 <=a[i] &&(*ite)->X2 >=a[i] &&(*ite)->Y1 <=a[i+1] &&(*ite)->Y2 >=a[i+1]))
{
ite++;
}
if(ite == lst.end())
cout<<"IGNORED"<<endl;
else
{
printf("%d\n",(*ite)->num);
pNode = *ite;
lst.erase(ite);
lst.push_front(pNode);
}
}
return 0;
}