大理石在哪? 排序函數練習例題

大理石在哪兒
現有N個大理石,每個大理石上寫了一個非負整數、首先把各數從小到大排序
然後回答Q個問題。每個問題問是否有一個大理石寫着某個整數x,如果是,還要
回答哪個大理石上寫着x。排序後的大理石從左到右編號爲1~N。(在樣例中,爲了
節約篇幅,所有大理石的數合併到一行,所有問題也合併到一行。)
樣例輸入:
4 1
2 3 5 1
5
5 2
1 3 3 3 1
2 3
 
樣例輸出:
CASE# 1:
5 found at 4
CASE# 2:
2 not found

3 found at 3
#include <iostream>
#include <algorithm>
using namespace std;
#define maxn 1000

int main()
{
    int n,q,x,kase = 0;
    int a[maxn];

    while(scanf("%d%d",&n,&q) == 2 && n)
    {
        printf("CASE# %d:\n",++kase);
   
        for(int i = 0; i < n; i++)
        {
	    scanf("%d",&a[i]);
	}
	sort(a, a + n);

	while(q--)
	{ 
	    scanf("%d",&x);
	    int p = lower_bound(a, a + n, x) - a;
	    if(a[p] == x) 
	    {
	        printf("%d found at %d\n", x, p + 1);
	    }
	    else
	    {
	        printf("%d not found\n",x);
	    }
	}
    }

    return 0;
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章