Array K-Coloring - codeforce
题意
给\(n\)个位置染色,有\(k\)种颜色。每个位置有一个数字\(a_i\),注意:数字相同的位置的颜色不能相同,然后\(k\)种颜色都要用上。随便输出一种染色方案。
题解
排序,然后依次染色就行。
代码
const int N = 100005;
int n, k;
int cnt[N], ans[N];
P p[6000];
int main()
{
cin >> n >> k;
Rep(i, 1, n) {
cin >> p[i].first;
p[i].second = i;
cnt[p[i].first]++;
}
Rep(i, 1, n) if (cnt[p[i].first] > k) {
puts("NO");
return 0;
}
sort(p + 1, p + n + 1);
int t = 0;
Rep(i, 1, n) {
ans[p[i].second] = ++t;
t %= k;
}
puts("YES");
Rep(i, 1, n) cout << ans[i] << " ";
cout << endl;
return 0;
}