Submission #1152504

#TimeUsernameProblemLanguageResultExecution timeMemory
1152504hmm789Trobojnica (COCI19_trobojnica)C++20
0 / 110
0 ms320 KiB
#include "bits/stdc++.h" using namespace std; #define int long long #define double long double #define INF 1000000000000000000 #define MOD 1000000007 int32_t main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n, xr = 0; string s; cin >> n >> s; int a[n]; for(int i = 0; i < n; i++) a[i] = s[i]-'0'; int idx = -1; for(int i = 0; i < n; i++) { xr ^= a[i]; if(a[i] != a[(i+1)%n] && (a[(i+n-1)%n] == a[i] || a[(i+n-1)%n] == a[(i+1)%n] || a[(i+2)%n] == a[i] || a[(i+2)%n] == a[(i+1)%n])) idx = i; } if(xr || idx == -1) { cout << "NE\n"; return 0; } vector<tuple<int, int, int>> ans; int i1 = idx, i2 = (idx+1)%n, prv = a[i1]^a[i2]; ans.push_back({i1+1, (i2+1)%n+1, prv}); i1 = (i1+n-1)%n; i2 = (i2+1)%n; for(int i = 0; i < n-4; i++) { if(a[i1] != prv) { prv ^= a[i1]; ans.push_back({i1+1, i2+1, prv}); i1 = (i1+n-1)%n; } else if(a[i2] != prv) { prv ^= a[i2]; ans.push_back({(i1+1)%n+1, (i2+1)%n+1, prv}); i2 = (i2+1)%n; } else { cout << "NE\n"; return 0; } } cout << "DA\n"; for(auto [x,y,z] : ans) cout << x << " " << y << " " << z << '\n'; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...