求助(玄关)1为什么没有输出啊(虽然写了一半)
查看原帖
求助(玄关)1为什么没有输出啊(虽然写了一半)
1029356
qixiuyuan123楼主2023/11/22 23:01
#include<cstdio>
using namespace std;
int n,oqt,tqo,tqth,thqt,oqth,thqo,num[1000005],one,two,three,ans;//oqt o(one)q(区)t(two)[即为1区的2,方便交换(th为three,3)]以此类推.one(1的个数)(以此类推)
int main()
{
//	freopen("sort.in","r",stdin);
//	freopen("sort.out","w",stdout);
	scanf("%d" ,&n);
	for(int i=1;i<=n;i++)
	{
		scanf("%d" ,&num[i]);
		if(num[i]==1)
			one++;
		else if(num[i]==2)
			two++;
		else 
			three++;
	}
//	printf("%d %d %d" ,one,two,three); 测试输入 
	for(int i=1;i<=one;i++)
	{
		if(num[i]==2)
			oqt++,printf("%d\n" ,oqt);//ans++;
		else if(num[i]==3)
			oqth++,printf("%d\n" ,oqth);//ans++;
	}
	for(int i=one+1;i<=two;i++)
	{
		if(num[i]==1)
			tqo++,printf("%d\n" ,tqo);//ans++;
		else if(num[i]==3)
			tqth++,printf("%d\n" ,tqth);//ans++;
	}
	for(int i=two+1;i<=three;i++)
	{
		if(num[i]==1)
			thqo++,printf("%d\n" ,thqo);//ans++;
		else if(num[i]==2)
			thqt++,printf("%d\n" ,thqt);//ans++;
	if(oqt<=tqo)
		ans+=oqt,tqo-=oqt,oqt=0,printf("%d %d\n" ,ans,oqt);
	else 
		ans+=tqo,oqt-=tqo,tqo=0,printf("%d %d\n" ,ans,tqo);
	if(oqth<=thqo)
		ans+=oqth,thqo-=oqth,oqth=0,printf("%d %d\n" ,ans,oqth);
	else 
		ans+=thqo,oqth-=thqo,thqo=0,printf("%d %d\n" ,ans,thqo);
	if(tqth<=thqt)
		ans+=tqth,thqt-=tqth,tqth=0,printf("%d %d\n" ,ans,tqth);
	else
		ans+=thqt,tqth-=thqt,thqt=0,printf("%d %d\n" ,ans,thqt);
//	if(oqt==0&&tqo==0&&tqth==0&&thqt==0&&oqth==0&&thqo==0)
//	{
		printf("%d\n" ,ans);
	//	return 0;
//	}
	
	return 0;
}
2023/11/22 23:01
加载中...