题目就不粘了,毕竟我发现各大oj上没有,也许是自己出的题,保护个人财产(哇,我好棒)
好晚了,瞌睡,直接贴代码
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#define MAXN 1000006
int n,k,m;
using namespace std;
struct Node{
int a,p;
}s[MAXN];
int cnt[MAXN];
int flag=0;
bool cmp(Node x,Node y)
{
return x.a<y.a;
}
int tt;
int main()
{
// freopen("divisibility.in","r",stdin);
// freopen("divisibility.out","w",stdout);
scanf("%d%d%d",&n,&k,&m);
for(int i=1;i<=n;i++)
{
scanf("%d",&s[i].a);
s[i].p=s[i].a%m;
cnt[s[i].p]++;
if(cnt[s[i].p]>=k)
flag=1;
}
int inc=0;
int pos=0;
if(!flag)
cout<<"No"<<endl;
else
{
cout<<"Yes"<<endl;
sort(s+1,s+n+1,cmp);//找出最小值最小的
for(int i=1;i<=n;i++)
if(cnt[s[i].p]>=k){
tt=s[i].p;
pos=i;
break;
}
for(int i=pos;i<=n&&inc!=k;i++)
if(s[i].p==tt){
inc++;
printf("%d ",s[i].a);
}
}
return 0;
}
嗯呐,虽然和题解很像,但是,这是我自己打的哟,不是抄题解!!!!!对(有我的思考)