How ABC302 G
  • 板块学术版
  • 楼主sundyLIUXY
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/5/21 14:18
  • 上次更新2023/10/23 15:07:55
查看原帖
How ABC302 G
706737
sundyLIUXY楼主2023/5/21 14:18

rt,算法似乎假了

#include <bits/stdc++.h>
using namespace std;
typedef pair<int, int> PII;

int n, a[200010], a1, a2, a3, c1, c2, c3, ans, cnt[10], idx = 0;

int main()
{
	scanf("%d", &n);
	for(int i = 1; i <= n; i++) 
	{
		scanf("%d", &a[i]);
		if(a[i] == 1) c1++;
		if(a[i] == 2) c2++;
		if(a[i] == 3) c3++;
	}
	a1 = c1, a2 = c1+c2, a3 = c1+c2+c3;
	for(int i = 1; i <= a1; i++)
		if(a[i] != 1) ans++, cnt[a[i]]++, a[i] = 1;
	cout << ans << endl;
	idx = 2;
	for(int i = a1+1; i <= n; i++)
		if(a[i] == 1)
		{
			if(!cnt[idx]) idx++;
			a[i] = idx, cnt[idx]--;
		}
	for(int i = 1; i <= n; i++) printf("%d ", a[i]);
	cout << endl;
	//
	for(int i = a1+1; i <= a2; i++)
		if(a[i] != 2) ans++, cnt[a[i]]++, a[i] = 2;
	cout << ans << endl;
	idx = 3;
	for(int i = a2+1; i <= n; i++)
		if(a[i] == 1)
		{
			if(!cnt[idx]) idx++;
			a[i] = idx, cnt[idx]--;
		}
	for(int i = 1; i <= n; i++) printf("%d ", a[i]);
	cout << endl;
	//
	for(int i = a2+1; i <= a3; i++)
		if(a[i] != 3) ans++, a[i] = 3;
	//cout << ans << endl;
	printf("%d", ans);

	return 0;
}
2023/5/21 14:18
加载中...