题意
给\(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;}