[解题报告]11498 - Division of Nlogonia
题目大意
题目原文:http://uva.onlinejudge.org/external/114/11498.pdf
背景
在xy平面上选择一点当作分割点,以此点为中心画出一条水平线与一条垂直线,可分割成四个域区,如下图所示:
给定任意点,请你判断该点在哪个区域内,或是在区域的交界上.
输入
输入有多组测试数据,每组数据的第一列为整数 K ( 0 < K <= 1000)表示欲查询位置的点数,第二列有两个整数 N, M ( -10000 < N, M < 10000)表示分割点的坐标,接下来的K列每列有两个整数X, Y表示欲查询位置的点坐标。当K=0表示测试数据结束
输出
请分别就坐标的位置输出该点在哪个区域,或是在边上。
若在边上,请输出 divisa。
若在左上方的区域,请输出 NO。
若在右上方的区域,请输出 NE。
若在右下方的区域,请输出 SE。
若在左下方的区域,请输出 SO
Sample Input
3 2 1 10 10 -10 1 0 33 4 -1000 -1000 -1000 -1000 0 0 -2000 -10000 -999 -1001 0
Sample Output
NE divisa NO divisa NE SO SE
算法:
很简单的一个算法,很容易理解,见代码吧。
代码:
这里附上我的代码,你可以去这里提交你的代码验证你的代码是否正确。
#include<stdio.h> int main(void) { int k,n,m,x,y; while(scanf("%d",&k)!=EOF) { if(k==0)break; scanf("%d %d",&n,&m); while(k--) { scanf("%d %d",&x,&y); if(x==n||y==m) printf("divisa\n"); else if(x > n&&y > m) printf("NE\n"); else if(x > n&&y < m) printf("SE\n"); else if(x < n&&y > m) printf("NO\n"); else if(x < n&&y < m) printf("SO\n"); } } return 0; }