题意:输入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; }