版权声明:欢迎转载欢迎评论! https://blog.csdn.net/rabbit_ZAR/article/details/85051643
代码:
#include<bits/stdc++.h>
using namespace std;
#define read(x) scanf("%d",&x)
#define maxn 100000
int n;
vector<int> a[maxn+5];
int col[maxn+5],cnt;
int main() {
read(n);
for(int i=1;i<=n;i++) {
int x;
read(x);
a[x].push_back(i);
if(x>=n) goto End;
}
for(int i=0;i<n;i++) {
if(!a[i].size()) continue;
int lst=n-i;
if(a[i].size()%lst) goto End;
for(int j=0;j<a[i].size();j++) {
int x=a[i][j];
col[a[i][j]]=cnt+j/lst+1;
}
cnt+=a[i].size()/lst;
}
printf("Possible\n");
for(int i=1;i<=n;i++) printf("%d ",col[i]);
return 0;
End:;
printf("Impossible");
return 0;
}