CodeForces ~ 988A ~ Diverse Team (水,map)

题意:输入N个数字,问能否找出K个数字使得他们的值都不一样,输出他们的下标,输出任意解即可。


思路:map<int,int>值对应下标,size≥k就输出,否则就NO。


#include<bits/stdc++.h>
using namespace std;
const int MAXN = 100005;
int n, k;
map<int, int> mp;
int main()
{
    scanf("%d%d", &n, &k);
    for (int i = 1; i <= n; i++)
    {
        int t; scanf("%d", &t);
       mp[t] = i;
    }
    if (mp.size() >= k)
    {
        printf("YES\n");
        for (auto i: mp)
        {
            if (k-- == 0) break;
            printf("%d ", i.second);
        }
    }
    else printf("NO\n");
    return 0;
}

猜你喜欢

转载自blog.csdn.net/ZscDst/article/details/80565869