60pts求助
查看原帖
60pts求助
415320
没见过AC楼主2022/11/16 10:44

记录

#include<bits/stdc++.h>
using namespace std;
const int N=1e6+100;
int m1=0,m2,n,a[N];
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		scanf("%d",&a[i]);
		if(a[i]==1)
		{
			m1++;
		}
	}
	m2=n-m1;
	if(m1==0)
	{
		for(int i=1;i<=n;i++) printf("-1 ");
		return 0;
	}
	if(m2==0)
	{
		for(int i=1;i<=n;i++) printf("1 ");
		return 0;
	}
	int x=1-(n%2);
	if(m1==1)
	{
		
		for(int i=1;i<=n/2;i++)
		{
			printf("-1 ");
		}
		printf("1 ");
		for(int i=1;i<=n/2-x;i++)
		{
			printf("-1 ");
		}
		return 0;
	}
	if(m2==1)
	{
		for(int i=1;i<=n/2;i++)
		{
			printf("1 ");
		}
		printf("-1 ");
		for(int i=1;i<=n/2-x;i++)
		{
			printf("1 ");
		}
		return 0;
	}
	if(m1>m2)
	{
		for(int i=1;i<=m2;i++)
		{
			for(int j=1;j<=m1/m2;j++)
			{
				printf("1 ");
			}
			printf("-1 ");
		}
		int x=m1/m2;
		for(int i=1;i<=m1-m2*x;i++)
		{
			printf("1 ");
		}
	}
	else
	{
		if(m1>=(m2-1)*2)
		{
			for(int i=1;i<=m1-1;i++)
		{
			printf("1 ");
			for(int j=1;j<=m2/(m1-1);j++)
			{
				printf("-1 ");
			}
		}
		printf("1 ");
		}
		else
		{
			for(int i=1;i<=m1;i++)
			{
				for(int j=1;j<=m2/m1;j++)
				{
						printf("-1 ");
				}
				printf("1 ");
			}
			int x=m2/m1;
			for(int i=1;i<=m2-m1*x;i++)
			{
				printf("-1 ");
			}
		}
		
	}
	return 0;
}
2022/11/16 10:44
加载中...