Основное
 
 
Отправитель Задача Язык Вердикт Время Память Отослано Протест.  
188153143 Дорешивание:
DaiRuiChen007
1682D - 65 C++14 (GCC 6-32) Полное решение 77 мс 3344 КБ 2023-01-06 04:06:29 2023-01-06 04:06:29
→ Исходный код
// 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;
}
?
Время: ? ms, память: ? КБ
Вердикт: ?
Ввод
?
Вывод участника
?
Ответ жюри
?
Комментарий чекера
?
Диагностика
?
Показать детали тестирования