首页 > 代码库 > BNUOJ34980方(芳)格(哥)取数(好坑)
BNUOJ34980方(芳)格(哥)取数(好坑)
方(芳)格(哥)取数
师大有三宝,妹子真不少,芳姐or芳哥,认路本领好!
众所周知,师大的芳哥带队本领高强。被众粉丝尊称为“地图”!芳哥对随意时刻,随意地点。随意地形都驾轻就熟,比方校园。密室,KTV。地铁,机场,山间。田野,丘陵等等等等。
嗯,有一天芳哥带着小伙伴来到一片丘陵,这片丘陵广袤无垠,层峦叠嶂,就像一个二维数组的样子。于是芳哥花了0.2333秒记住了这片土地。
芳姐将这片丘陵分为N*M个区域,然后她记住了每一个区域的海拔。厉害吧~并且芳哥发现一个有趣的地方,就是对于同一个纬度,东边总是比西边高;对于同一个经度,南边总是比北边高。
晚上在芳哥清点人数时发现小胖不见了,赶紧打电话给小胖,小胖也不知道自己如今在哪儿,仅仅知道自己如今所在位置的海拔为K。芳哥太操心小胖以至于不能思考了,于是推断小胖是否还在这片丘陵的任务就落到了你的头上。值得欣慰的是。芳姐最多还能回答你N+M次询问,你能够询问她X,Y这个坐标的海拔是多少。假设你发现某个位置的海拔恰好等于小胖所在的海拔,那么你就觉得小胖还在这片丘陵。
假设你发现小胖还在这片丘陵,输出YES,否则输出NO。假设你没在限定的次数内推断出来。芳哥让我给你一个WA。
Input
首先是一个整数T(T<=50),表示数据组数。
每组数据首先是三个整数N, M(1 <= N, M <= 1000), K(int范围),表示矩阵行数、列数和小胖所在的海拔。
然后对于你的程序的每一个询问,结果也会作为输入返回,保证询问结果都在int内。
Output
在确定答案之前,每行输出一个询问,为两个整数X,Y,用空格隔开。表示询问A[X][Y]这个数是多少。
当你的程序可以推断结果时,依照题意输出一行结果 “YES” 或 “NO”(引號作为强调)。假设答案正确将直接进入下一组数据。否则本次提交结果为WA。
注意不合法的询问或推断将直接导致WA、RE或TLE。
Hint
比方这片丘陵是这个样子的:
大小为4 x 3
1 9 99
2 19 100
30 300 3000
99 999 9999
假设小胖告诉你他所在的海拔为300。一种可能推断步骤例如以下:
询问1 2
芳哥告诉你9
询问4 3
芳哥告诉你9999
询问3 2
芳哥告诉你300
这时你能够推断小胖还在这片丘陵上。
输出YES就可以。
注意:二维数组的下标从1開始。
===============================
特别鸣谢Liserious赞助题目名。
===============================
特别注意:
对于C/C++选手,请在每一个输出后加上fflush(stdout);
对于JAVA选手,请在每一个输出后加上System.out.flush();
对于Python选手,请在每一个输出后加上sys.stdout.flush()。须要import sys。
对于Pascal选手,请在每一个输出后加上Flush(StdOut)。或者使用writeln()来输出。
Source
Author
#include<stdio.h> #include<stdlib.h> int n,m,k,t,nm,x,y,flag,a; int main() { scanf("%d",&t); while(t--) { scanf("%d%d%d",&n,&m,&k); nm=n+m; flag=0; x=1,y=m;//这样一定能够推断k是否在里面 while(nm) { nm--; printf("%d %d\n",x,y);fflush(stdout); scanf("%d",&a); if(a==k) { printf("YES\n");flag=1;fflush(stdout); break; } if(a>k)y--; else x++; if(x>n||y<=0)break; } if(flag==0)printf("NO\n"),fflush(stdout); } }
BNUOJ34980方(芳)格(哥)取数(好坑)