# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
967826 | Isam | Superpozicija (COCI22_superpozicija) | C++17 | 13 ms | 348 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include<bits/stdc++.h>
using namespace std;
int n, a[100002], b[100002];
string z;
bool was[100002];
inline bool is_valid(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 == 0;
}
signed main(){
ios_base::sync_with_stdio(0), cin.tie(0);
int T;
cin >> T;
function<void()> test_case = [](){
cin >> n >> z;
int openings(0), closings(0);
for(register int i = 1; i <= n; ++i){
cin >> a[i] >> b[i];
a[i]--, b[i]--;
openings += (z[a[i]] == '(');
}
// if(openings != n) return cout << -1 << '\n', void();
for(register int i = 1; i <= n; ++i){
if(z[a[i]] == '('){
was[i] = a[i] < b[i];
if(a[i] < b[i]){
z[b[i]] = 'a';
}else{
z[a[i]] = 'a';
}
}else{
was[i] = a[i] > b[i];
if(a[i] > b[i]){
z[b[i]] = 'a';
}else{
z[a[i]] = 'a';
}
}
}
string tmp = "";
for(register int i = 0; i < (n << 1); ++i){
if(z[i] == 'a') continue;
tmp += z[i];
}
if(is_valid(tmp)){
for(register int i = 1; i <= n; ++i){
cout << was[i] << " \n"[i==n];
}
}else{
cout << -1 << '\n';
}
};
while(T--) test_case();
return 0;
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |