General
 
 
# Author Problem Lang Verdict Time Memory Sent Judged  
188153143 Practice:
DaiRuiChen007
1682D - 65 C++14 (GCC 6-32) Accepted 77 ms 3344 KB 2023-01-06 04:06:29 2023-01-06 04:06:29
→ Source
// LUOGU_RID: 98793642
#include<bits/stdc++.h>
using namespace std;
const int MAXN=2e5+1;
char deg[MAXN];
int p[MAXN],link[MAXN];
inline void solve() {
	int n,tot=0;
	scanf("%d%s",&n,deg+1);
	for(int i=1;i<=n;++i) tot+=deg[i]-'0',p[i]=i,link[i]=i-1;
	if(tot==0||tot%2==1) {
		puts("NO");
		return ;
	}
	vector <int> fail;
	for(int i=1;i<=n;++i) {
		if(i==1||i==n) { 
			if(deg[i]=='0') fail.push_back(i);
		} else {
			if(deg[i]=='1') fail.push_back(i);
		}
	}
	puts("YES");
	for(int i=0;i<(int)fail.size();i+=2) {
		if(fail[i+1]==n)  {
			printf("%d %d\n",link[n],n);
			link[n]=link[fail[i]];
			link[fail[i]]=0;
		} else link[fail[i+1]+1]=fail[i];
	}
	for(int i=1;i<=n;++i) if(link[i]>0) printf("%d %d\n",i,link[i]);
}
signed main() {
	int T;
	scanf("%d",&T);
	while(T--) solve();
	return 0;
}
?
Time: ? ms, memory: ? KB
Verdict: ?
Input
?
Participant's output
?
Jury's answer
?
Checker comment
?
Diagnostics
?
Click to see test details