UVA - 10474 Where is the Marble?

题目大意:嗯让我想想怎么描述……大体来说你在做游戏,对方给你一串数字,你要把这些数字从小到大排好顺序,之后再让你找出给定数字的位置,如果数字有重复,就输出最靠前的位置。

然后,似乎没什么坑的(最难过的是完全没想过sort就可以了……害得我WA了三次要哭了……)

题目链接:戳我戳我哈哈哈

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#define maxn 10005

using namespace std;
int a[maxn],b[maxn],c[maxn];

int main(void)
{
    int m,n;
    int kase=1;
    while(~scanf("%d%d",&n,&m))
    {
        memset(b,0,sizeof(b));
        memset(a,0,sizeof(a));
        memset(c,0,sizeof(c));
        if(n==0&&m==0)
            break;
        for(int i=0;i<n;i++)
        {
            scanf("%d",&a[i]);
        }
        sort(a,a+n);
        for(int i=0;i<n;i++)//开了个数组直接把每个数字的位置存了下来
        {
            if(b[a[i]]==0)
                b[a[i]]=i+1;
        }
        for(int i=0;i<m;i++)
        {
            scanf("%d",&c[i]);
        }
        printf("CASE# %d:\n",kase++);
        for(int i=0;i<m;i++)
        {

            if(b[c[i]]==0)
                printf("%d not found\n",c[i]);
            else
                printf("%d found at %d\n",c[i],b[c[i]]);
        }
    }
    return 0;
}

呼呼

猜你喜欢

转载自blog.csdn.net/destiny1507/article/details/81174979
今日推荐