描述
在某一国度里流行着一种游戏。游戏规则为:在一堆球中,每个球上都有一个整数编号i(0<=i<=100000000),编号可重复,现在说一个随机整数k(0<=k<=100000100),判断编号为k的球是否在这堆球中(存在为"YES",否则为"NO"),先答出者为胜。现在有一个人想玩玩这个游戏,但他又很懒。他希望你能帮助他取得胜利。
6 4 23 34 46 768 343 343 2 4 23 343
样例输出
NO
NO
YES
YES
测试代码
1 #include<iostream> 2 #include<cstdio> 3 #include<algorithm> 4 #define M 1000010 5 6 using namespace std; 7 8 int a[M]; 9 10 bool find(int key, int s, int e) 11 { 12 int m; 13 if (key<a[s] || key>a[e]) 14 { 15 return false; 16 } 17 while (s <= e) 18 { 19 m = (s + e) / 2; 20 if (key == a[m]) 21 { 22 return true; 23 } 24 else if (key < a[m]) 25 { 26 e = m - 1; 27 } 28 else 29 { 30 s = m + 1; 31 } 32 } 33 return false; 34 } 35 36 int main() 37 { 38 int n, m, i, t; 39 scanf("%d%d", &m, &n); 40 41 for (i = 0; i < m; i++) 42 { 43 scanf("%d", &a[i]); 44 } 45 sort(a, a + m); 46 for (i = 0; i<n; i++) 47 { 48 scanf("%d", &t); 49 if (find(t, 0, m - 1)) 50 { 51 printf("YES\n"); 52 } 53 else 54 { 55 printf("NO\n"); 56 } 57 } 58 59 return 0; 60 }
原文:http://www.cnblogs.com/maxin/p/5483509.html