Submission #952454

# Submission time Handle Problem Language Result Execution time Memory
952454 2024-03-24T02:29:34 Z NK_ Superpozicija (COCI22_superpozicija) C++17
10 / 110
17 ms 4072 KB
// Success consists of going from failure to failure without loss of enthusiasm
#include <bits/stdc++.h>

using namespace std;

#define nl '\n'
template<class T> using V = vector<T>;

using vi = V<int>;

void solve() {
	int N; cin >> N;
	string S; cin >> S;

	V<array<int, 2>> A(N); for(auto& x : A) { cin >> x[0] >> x[1]; --x[0], --x[1]; }

	if (N % 2) {
		cout << -1 << nl;
		return;
	}

	vi I(2 * N);
	for(int i = 0; i < N; i++) {
		I[A[i][0]] = 2 * i;
		I[A[i][1]] = 2 * i + 1;
	}

	vi ans(N), take(2 * N); int open = N / 2;
	for(int i = 0; i < 2 * N; i++) if (I[i] != -1) {
		int x = I[i] / 2, j = A[x][1];

		if (S[i] == '(') {
		 	if (open > 0) { open--; ans[x] = 0; take[i] = 1; } 
		 	else { ans[x] = 1; take[j] = 1; }
		} else {
			if (S[i] != S[j]) {
				if (open > 0) { open--; ans[x] = 1; take[j] = 1; }
				else { ans[x] = 0; take[i] = 1; }
			} else { ans[x] = 1; take[j] = 1; }
		}
		
		I[i] = I[j] = -1;
	}

	int bal = 0; for(int i = 0; i < 2 * N; i++) if (take[i]) {
		if (S[i] == '(') bal++;
		else bal--;

		if (bal < 0) {
			cout << -1 << nl;
			return;
		}
	}

	if (bal != 0) {
		cout << -1 << nl;
		return;
	}

	for(auto& x : ans) cout << x << " ";
	cout << nl;
}

int main() {
	cin.tie(0)->sync_with_stdio(0);
	
	int T; cin >> T; while(T--) {
		solve();
	}

	exit(0-0);
}
# Verdict Execution time Memory Grader output
1 Incorrect 17 ms 976 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 13 ms 1116 KB Output is correct
2 Correct 14 ms 1492 KB Output is correct
3 Correct 12 ms 1840 KB Output is correct
4 Correct 14 ms 2012 KB Output is correct
5 Correct 12 ms 2308 KB Output is correct
6 Correct 8 ms 2396 KB Output is correct
7 Correct 10 ms 2908 KB Output is correct
8 Correct 12 ms 3404 KB Output is correct
9 Correct 14 ms 3560 KB Output is correct
10 Correct 15 ms 4072 KB Output is correct
# Verdict Execution time Memory Grader output
1 Incorrect 1 ms 348 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 17 ms 976 KB Output isn't correct
2 Halted 0 ms 0 KB -