题目
原题链接:A. Diverse Team
题意
给出n个同学的排名,现需要挑出k个不同名次的学生,问能否做到。若能则输出任意一种方案。
代码
#include<bits/stdc++.h>
using namespace std;
int main() {
int n,k,s[100];
map<int,int> v;
map<int,int>::iterator it;
cin>>n>>k;
for(int i=0;i<n;i++){
cin>>s[i];
}
for(int i=0;i<n;i++){
int flag = 0;
for(it=v.begin();it!=v.end();it++){
if(s[i]==it->second){
flag = 1;
break;
}
}
if(!flag){
v[i+1]=s[i];
}
}
if(v.size()>=k){
printf("YES\n");
for(it=v.begin();it!=v.end(),k;it++,k--){
cout<<it->first;
if(k) printf(" ");
}
}else{
printf("NO\n");
}
return 0;
}