Where is the Marble?(c++std)

原题链接:https://odzkskevi.qnssl.com/53e5c6d66221525b0c18113b513fc3fb?v=1518444985

题目大意:输入一串任意数列后,再输入任意一个数,若有这个数则输出它的最小的位置(注意从小到大排序以后的),没有则输出not found

思路:先使用sort()对数列排序,然后使用二分查找的函数lower_bound()查找该元素即可

AC代码:

 1 #include <stdio.h>
 2 #include <algorithm>
 3 using namespace std;
 4 
 5 int main()
 6 {
 7     int N,Q,a;
 8     int c=1,i,*m;
 9     int arr[10000];
10     while (scanf("%d %d",&N,&Q)&&N!=0&&Q!=0)
11     {
12         printf("CASE# %d:\n",c);
13         for(i=0;i<N;i++)
14             scanf("%d",&arr[i]);
15         sort (arr,arr+N);   
16         while(Q--)
17         {
18             scanf("%d",&a);
19             m = lower_bound(arr,arr+N-1,a);
20             if (*m==a)
21                 printf("%d found at %d\n",a,(m-arr+1));
22             else
23                 printf("%d not found\n",a);
24         }
25         c++;
26     }
27     return 0;
28 }

 

posted @ 2018-02-14 12:37  Ashechol  阅读(79)  评论(0)    收藏  举报