# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
968369 | 2024-04-23T11:05:17 Z | Isam | Superpozicija (COCI22_superpozicija) | C++17 | 25 ms | 5944 KB |
#include<bits/stdc++.h> using namespace std; int n, l[100002], r[100002]; string z; int ans[100002]; int gr[200002]; set<pair<int, int>> st; signed main(){ ios_base::sync_with_stdio(0), cin.tie(0); int T; cin >> T; function<void()> test_case = [](){ cin >> n >> z; st.clear(); z = '.' + z; for(register int i = 1; i <= n; ++i){ cin >> l[i] >> r[i]; gr[l[i]] = r[i]; gr[r[i]] = l[i]; if(z[l[i]] == '(' && z[r[i]] == '('){ ans[i] = 0; z[r[i]] = '.'; }else if(z[l[i]] == ')' && z[r[i]] == ')'){ ans[i] = 1; z[l[i]] = '.'; }else if(z[l[i]] == '(' && z[r[i]] == ')'){ st.insert({l[i], i}); z[l[i]] = '.'; ans[i] = 1; }else{ // ) ( st.insert({r[i], i}); z[r[i]] = '.'; ans[i] = 0; } } int tot(0); for(register int i = 1; i <= 2*n; ++i){ if(z[i] ^ '.') tot += (z[i]=='('?1:-1); while(tot < 0 && !st.empty()){ int pos = st.begin()->first, j = st.begin()->second; ans[j] ^= 1; z[pos] = '('; z[gr[pos]] = '.'; tot += 2; st.erase(st.begin()); } } function<bool(const string)> is_valid = [](const string &s){ int tot(0); for(register int i = 0; i < (int)s.size(); ++i){ tot += (s[i]=='('?1:-1); if(tot < 0) return false; } return !tot; }; string tmp = ""; for(register int i = 1; i <= 2*n; ++i){ if(z[i] == '.') continue; tmp += z[i]; } if(is_valid(tmp)){ for(register int i = 1; i <= n; ++i) cout << ans[i] << ' '; }else{ cout << -1; } cout << '\n'; }; while(T--) test_case(); return 0; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 20 ms | 1112 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 20 ms | 1372 KB | Output is correct |
2 | Correct | 14 ms | 1628 KB | Output is correct |
3 | Correct | 13 ms | 2012 KB | Output is correct |
4 | Correct | 14 ms | 2396 KB | Output is correct |
5 | Correct | 13 ms | 2388 KB | Output is correct |
6 | Correct | 11 ms | 2136 KB | Output is correct |
7 | Correct | 11 ms | 2648 KB | Output is correct |
8 | Correct | 12 ms | 2956 KB | Output is correct |
9 | Correct | 14 ms | 3400 KB | Output is correct |
10 | Correct | 16 ms | 3896 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 348 KB | Output is correct |
2 | Correct | 18 ms | 1436 KB | Output is correct |
3 | Correct | 20 ms | 2132 KB | Output is correct |
4 | Correct | 18 ms | 2648 KB | Output is correct |
5 | Correct | 21 ms | 2904 KB | Output is correct |
6 | Correct | 21 ms | 3416 KB | Output is correct |
7 | Correct | 12 ms | 3332 KB | Output is correct |
8 | Correct | 18 ms | 4124 KB | Output is correct |
9 | Correct | 18 ms | 4560 KB | Output is correct |
10 | Correct | 24 ms | 5348 KB | Output is correct |
11 | Correct | 25 ms | 5944 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 20 ms | 1112 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |