ZOJ - 2480 Simplest Task in Windows
来源:互联网 发布:程序员是吃青春饭的吗 编辑:程序博客网 时间:2024/04/20 02:25
Description
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
Source
#include<cstdio>
using namespace std;
struct a
{
int x1,x2,y1,y2;
}a[11];
struct b
{
int x,y;
}b[51];
int main()
{
int n,m,i,j;
while(scanf("%d",&n)&&n)
{
for(i=0;i<n;i++)
scanf("%d%d%d%d",&a[i].x1,&a[i].y1,&a[i].x2,&a[i].y2);
scanf("%d",&m);
for(i=0;i<m;i++)
scanf("%d%d",&b[i].x,&b[i].y);
for(i=0;i<m;i++)
{
for(j=n-1;j>=0;j--)//注意矩形的输入顺序是与序号相反的。The windows are given in back-to-front order.
{
if(a[j].x1<=b[i].x&&a[j].x2>=b[i].x&&a[j].y1<=b[i].y&&a[j].y2>=b[i].y)
{
printf("%d\n",j);
break;
}
}
if(j==-1)
printf("-1\n");
}
}
return 0;
}
- ZOJ 2480 Simplest Task in Windows
- ZOJ - 2480 Simplest Task in Windows
- ZOJ 2480-Simplest Task in Windows
- zoj 2480 Simplest Task in Windows(水~)
- ACM Hrbeu OJ 1201 Simplest Task in Windows || ZOJ 2480
- ZOJ 2508 ---A Less Simple Task in Windows
- zoj 2508.A Less Simple Task in Windows
- [Apache --- Ant]DIY Ant Task I --- The Simplest one
- The Simplest COM Tutorial in Visual Studio 2008
- ZOJ 2969 Easy Task
- ZOJ 3844 Easy Task
- zoj 3844 easy task
- ZOJ 2969 Easy Task
- ZOJ 3844Easy Task
- ZOJ 2969 Easy Task
- ZOJ :: Easy Task
- ZOJ 2969Easy Task
- hide the task bar and input panel in Windows Mobile
- 040.category 调用私有方法
- linux设置程序开机启动
- JSTL简介
- java多态--08
- C语言实现头插法(链表)
- ZOJ - 2480 Simplest Task in Windows
- C语言和C++的不同之处和相通之处
- O(logn)时间复杂度求Fibonacci数列(java)
- Metasploit测试暴雷漏洞 (编号CVE-2012-1889)
- Xcode 自动生成代码注释文档
- HDU 1097 A hard puzzle 求个位数
- 实现客户给的URL接口,以爬虫的方式
- Invert Binary Tree
- 二分图不带权匹配