您的位置:首页 > 其它

ZOJ 2480-Simplest Task in Windows

2016-03-10 10:46 363 查看
ZOJ Problem Set - 2480

Simplest Task in Windows

Time Limit: 2 Seconds
Memory Limit: 65536 KB

A typical windows platform may have several windows on the desktop. A user's operation may be as simple as a single click of the mouse. In the implementation of such a windows platform, one of the simplest tasks would be deciding which window had been clicked.

Given a serial of windows, for each mouse click, decide which window had been clicked. Please notice that windows may overlap, and the window on top would receive the click rather than others. And, we consider a window to be clicked even if the mouse is
just on its edge/corner. For the sake of simplicity, we assume that a window will not be activated to the top by any click.

Input

The first part of input is a serial of windows. First an integer N (1 <= N <= 10) is given, indicating the number of windows. Then N lines follow, each containing four integers, x1, y1, x2, y2, (x1 < x2, y1 < y2) the coordinates of the upper-left and lower-right
corners of a window. The windows are given in back-to-front order. N=0 signals the end of input.

The second part of input is a serial of mouse clicks. First an integer M (1 <= M <= 50) is given, indicating the number of mouse clicks. Then M lines follow, each containing two integers, x and y, the coordinates of a mouse click.

Output

For each mouse click in the input, output a single line containing the index (starting from 0) of the window which receives the click. If there is no such window, output "-1" in a line instead.

Sample Input

1

0 0 5 5

3

4 1

5 1

6 1

0

Sample Output

0

0

-1

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
struct node
{
int x1,y1,x2,y2;
}num[10000];
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
if(n==0)
break;
int i,j;
for(i=0;i<n;i++)
{
scanf("%d%d%d%d",&num[i].x1,&num[i].y1,&num[i].x2,&num[i].y2);
}
int m;
scanf("%d",&m);
while(m--){
int x,y,ans=-1;
scanf("%d%d",&x,&y);
for (i = n - 1; i >= 0; i--)
if (x >= num[i].x1 && x <= num[i].x2 && y >= num[i].y1  && y <= num[i].y2)
{
ans = i;
break;
}
printf("%d\n",ans);
}
}
return 0;
}


Author: SHI, Xiaohan
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: