ac:
#include<iostream>
#include<map>
using namespace std;
const int N=1005;
int hx[N];
map<int,int>mp;
int main(){
int n,p; scanf("%d%d",&n,&p);
for(int i=0;i<n;i++){
int x; scanf("%d",&x);
int num;
if(mp[x]){ num=mp[x]-1;}
else{
num=x%p;
while(hx[num]){ num++; if(num==p) num=0;}
hx[num]=1; mp[x]=num+1;
}
if(i!=n-1) printf("%d ",num);
else printf("%d",num);
}
return 0;
}
wa: 0是个特别的数 要注意!!
#include<iostream>
#include<map>
using namespace std;
const int N=1005;
int hx[N];
map<int,int>mp;
int main(){
int n,p; scanf("%d%d",&n,&p);
for(int i=0;i<n;i++){
int x; scanf("%d",&x);
int num;
if(mp[x]){ num=mp[x];}
else{
num=x%p;
while(hx[num]){ num++; if(num==p) num=0;}
hx[num]=x; mp[x]=num; // !!!!! x可能为0 !!!!! num可能为0
}
if(i!=n-1) printf("%d ",num);
else printf("%d",num);
}
return 0;
}