社区讨论

帮忙分析一下月赛T2为什么会uke&re玄一关

学术版参与者 2已保存回复 14

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
14 条
当前快照
1 份
快照标识符
@mlhv8l6i
此快照首次捕获于
2026/02/11 18:07
上周
此快照最后确认于
2026/02/13 15:25
6 天前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
#define R read()
#define int long long
int R{
	int re=0,fg=1;
	char c;
	while (1){
		c=getchar();
		if (('0'<=c and c<='9') or c=='-')	break;
	}
	if (c=='-')	c='0',fg=-1;
	while (1){
		re=re*10+c-'0';
		c=getchar();
		if (!(('0'<=c and c<='9') or c=='-'))	break;
	}
	return re*fg;
}
int t;
int l,r,n;
int flag[2];
int val[2][350234];
}
signed main(){
    t=R;
	while (t--){
		n=R;
		for (int i=1;i<=n;i++){
			int x=R;
			if (x==0)	flag[0]++;
			else	val[1][++flag[1]]=x;
		}	
		if (n==2 and flag[0]){
			cout<<"-1\n";
			continue;
		}
		if (n==3 and flag[1]%2){
			cout<<"-1\n";
			continue;
		}	
		if (flag[0]%2 and flag[1]%2){
			if (flag[0]>=2){
				cout<<"0 0\n";
				cout<<val[1][flag[1]]<<" 1\n";
				flag[0]--;
				flag[1]--;
			}
			else{
				cout<<val[1][flag[1]-1]<<" "<<val[1][flag[1]]<<"\n";
				cout<<"0 0\n";
				flag[0]--;
				val[1][--flag[1]]=1;
			}
		}
		if (flag[0]%2){
			cout<<"0 "<<val[1][flag[1]]<<"\n";
			flag[0]--;
			if (val[1][flag[1]]!=1)	val[1][flag[1]]=1;
			else	val[1][flag[1]]=2;
		}
		if (flag[1]%2){
			if (flag[0]>=2){
				cout<<"0 0\n";
				flag[0]-=2;
				val[1][++flag[1]]=1;
			}
			else{
				cout<<val[1][flag[1]]<<" "<<val[1][flag[1]-1]<<"\n";
				flag[0]++,flag[1]-=2;
				if (flag[0]>=2){
					cout<<"0 0\n";
					cout<<val[1][flag[1]]<<" 1\n";
					flag[0]--;
					flag[1]--;
				}
				else{
					cout<<val[1][flag[1]-1]<<" "<<val[1][flag[1]]<<"\n";
					cout<<"0 0\n";
					flag[0]--;
					val[1][--flag[1]]=1;
				} 
			}
		}
//		cout<<flag[0]<<" "<<flag[1]<<"=\n";
		if (flag[0]==2 and !flag[1]){
			cout<<"-1\n";
			continue;
		}
		if (flag[0]==0 and flag[1]==2){
			cout<<val[1][1]<<" "<<val[1][2]<<"\n";
			continue;
		}
		if (flag[0]%4){
			if (flag[1]){
				cout<<"0 "<<val[1][flag[1]]<<"\n";
				if (val[1][flag[1]]!=1)	val[1][flag[1]]=1;
				else	val[1][flag[1]]=2;
				cout<<"0 "<<val[1][flag[1]]<<"\n";
				if (val[1][flag[1]]!=1)	val[1][flag[1]]=1;
				else	val[1][flag[1]]=2;
				flag[0]-=2;
			}
			else{
				cout<<"0 0\n0 0\n0 1\n0 1\n";
				flag[0]-=6;
				val[1][++flag[1]]=1,val[1][++flag[1]]=1;
			}
		}
		while (flag[0]){
			flag[0]-=2;
			val[1][++flag[1]]=1;
			cout<<"0 0\n";
		}
		while (flag[1]){
			cout<<val[1][flag[1]]<<" "<<val[1][flag[1]-1]<<"\n";
			flag[1]-=2;
			if (!flag[1])	break;
			cout<<val[1][flag[1]]<<" 0\n";
			if (val[1][flag[1]]!=1)	val[1][flag[1]]=1;
			else	val[1][flag[1]]=2;
		}
		flag[0]=flag[1]=0;
	}
}
/*
0 0 -2 +1
0 1 -1 +0
1 1 +1 -2
*/

回复

14 条回复,欢迎继续交流。

正在加载回复...