Submission #442629

# Submission time Handle Problem Language Result Execution time Memory
442629 2021-07-08T11:24:44 Z jesus_coconut Trobojnica (COCI19_trobojnica) C++17
0 / 110
0 ms 204 KB
#include <bits/stdc++.h>
#define all(a) begin(a), end(a)
#define dbg(x) cerr << #x << " = " << x << '\n';
#define F first
#define S second
using namespace std;

using ll = long long;



int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(nullptr);

	int n;
	cin >> n;
	vector<pair<int, int>> v(n);
	array<int, 4> cnt{};
	for (int i = 0; i < n; ++i) {
		char c;
		cin >> c;
		v[i] = {(i + 1) % n, c - '0'};
		cnt[c - '0']++;
	}
	if (cnt[1] % 2 != cnt[2] % 2 || cnt[1] % 2 != cnt[2] % 2) {
		cout << "NE\n";
	}
	int prv = n - 1;
	int cur = 0;
	vector<array<int, 3>> ans;
	for (int q = 0; q < n - 3; ++q) {
		int mx = 0;
		for (int i = 1; i < 4; ++i) {
			if (cnt[i] > cnt[mx]) {
				mx = i;
			}
		}
		for (int i = 0; i < n - ans.size() + 5; ++i) {
			int nxt = v[cur].F;
			if (v[cur].S != v[nxt].S) {
				if (v[cur].S == mx || v[nxt].S == mx) {
					ans.push_back({cur + 1, v[nxt].F + 1, 6 - v[cur].S - v[nxt].S});
					cnt[v[cur].S]--;
					cnt[v[nxt].S]--;
					v[cur].F = v[nxt].F;
					v[cur].S = 6 - v[cur].S - v[nxt].S;
					cnt[v[cur].S]++;
					break;
				}
			}
			prv = cur;
			cur = v[cur].F;
		}
		cur = prv;
		if (q + 1 != ans.size()) {
			cout << "NE\n";
			return 0;
		}
	}
	int nxt = v[cur].F;
	if (v[cur].S + v[nxt].S + v[v[nxt].F].S != 6) {
		cout << "NE\n";
		return 0;
	}
	cout << "DA\n";
	for (auto &arr : ans) {
		for (auto &a : arr) {
			cout << a << ' ';
		}
		cout << '\n';
	}


    return 0;
}

Compilation message

trobojnica.cpp: In function 'int main()':
trobojnica.cpp:39:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::array<int, 3> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   39 |   for (int i = 0; i < n - ans.size() + 5; ++i) {
      |                   ~~^~~~~~~~~~~~~~~~~~~~
trobojnica.cpp:56:13: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::array<int, 3> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   56 |   if (q + 1 != ans.size()) {
      |       ~~~~~~^~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 0 ms 204 KB Output is correct
2 Correct 0 ms 204 KB Output is correct
3 Correct 0 ms 204 KB Output is correct
4 Incorrect 0 ms 204 KB Extra information in the output file
5 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 204 KB Output is correct
2 Correct 0 ms 204 KB Output is correct
3 Correct 0 ms 204 KB Output is correct
4 Incorrect 0 ms 204 KB Extra information in the output file
5 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 204 KB Output is correct
2 Correct 0 ms 204 KB Output is correct
3 Correct 0 ms 204 KB Output is correct
4 Incorrect 0 ms 204 KB Extra information in the output file
5 Halted 0 ms 0 KB -