社区讨论
帮忙分析一下月赛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 条回复,欢迎继续交流。
正在加载回复...