Submission #1264197

#TimeUsernameProblemLanguageResultExecution timeMemory
1264197goulthenTrobojnica (COCI19_trobojnica)C++20
0 / 110
0 ms320 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long
#define rep(i,a,b) for(int i=a;i<=b;++i)
#define per(i,a,b) for(int i=a;i>=b;--i)
#define pb push_back

const int MAXN=2e5 + 10;
int col[MAXN], p[MAXN], cnt[3];
array<int,3> ans[MAXN];

int32_t main(){
	ios::sync_with_stdio(0);cin.tie(0);
	int n;string s;
	cin >> n >> s;
	rep(i,1,n) {
		col[i] = s[i-1]-'1';
		cnt[col[i]]++;
		p[i] = i%n + 1;
	}

	int x = 1;
	rep(i,1,n-3) {
		if (max({cnt[0], cnt[1], cnt[2]}) == n - i - 1) {
			cout << "NE\n";
			return 0;
		}

		while (col[x] == col[p[x]] || (cnt[col[x]] == 1 && cnt[col[p[x]]] == 1)) x = p[x];
		int y = p[x];
		int nc = 3-col[x]-col[y];
		cnt[col[x]]--;
		cnt[col[y]]--;
		cnt[nc]++;
		col[x] = nc;
		p[x] = p[y];
		ans[i] = {x,p[y],nc};
	}

	if (cnt[0] == 1 && cnt[1] == 1) {
		cout << "DA\n";
		rep(i,1,n-3) cout << ans[i][0] << ' ' << ans[i][1] << ' ' << ans[i][2]+1 << '\n';
	} else {
		cout << "NE\n";
	}
	
	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...