例题5-1 大理石在哪儿(Where is the Marble?,Uva 10474)题解

欢迎访问我的Uva题解目录哦 https://blog.csdn.net/richenyunqi/article/details/81149109

题目描述

例题5-1 大理石在哪儿(Where is the Marble?,Uva 10474)题解_第1张图片

题意解析

现有N个大理石,每个大理石上写了一个非负整数。首先把各数从小到大排序,然后回答Q个问题。每个问题问是否有一个大理石写着某个整数x,如果是,还要回答哪个大理石上写着x。排序后的大理石从左到右编号为1~N(在样例中,为了节约篇幅,所有大理石上的数合并到一行,所有问题也合并到一行)

C++代码

#include
using namespace std;
int main(){
    int N,Q,a;
    for(int ii=1;~scanf("%d%d",&N,&Q)&&!(N==0&&Q==0);++ii){
        printf("CASE# %d:\n",ii);
        int A[N];
        for(int i=0;i<N;++i)
            scanf("%d",&A[i]);
        sort(A,A+N);//从小到大排序
        while(Q--){
            scanf("%d",&a);
            auto i=find(A,A+N,a)-A;//在容器A中查找a的位置
            if(i==N)
                printf("%d not found\n",a);
            else
                printf("%d found at %d\n",a,i+1);
        }
    }
    return 0;
}

你可能感兴趣的:(算法竞赛入门经典,-,Uva)