Submission #745449

#TimeUsernameProblemLanguageResultExecution timeMemory
745449Tenis0206Match (CEOI16_match)C++11
10 / 100
1 ms340 KiB
#include <bits/stdc++.h> using namespace std; const int nmax = 1e5; int n; int v[nmax + 5]; bool ok; char rez[nmax + 5]; int fr[nmax + 5]; void solve(int st, int dr) { if(st > dr) { return; } int poz = 0; int nrimp = 0; for(int i=st;i<=dr;i++) { ++fr[v[i]]; if(fr[v[i]] % 2 == 1) { ++nrimp; } else { --nrimp; } if(i != st && v[i] == v[st] && !nrimp) { poz = i; } } for(int i=st;i<=dr;i++) { fr[v[i]] = 0; } if(!poz) { ok = false; return; } rez[st] = '('; rez[poz] = ')'; solve(st+1,poz-1); solve(poz+1,dr); } int main() { ios::sync_with_stdio(false); cin.tie(0); #ifdef home freopen("match.in","r",stdin); freopen("match.out","w",stdout); #endif // home string s; cin>>s; n = s.size(); for(int i=1;i<=n;i++) { v[i] = s[i - 1]; ++fr[v[i]]; } ok = true; for(int i=1;i<=n;i++) { if(fr[v[i]] % 2 == 1) { ok = false; } fr[v[i]] = 0; } if(!ok) { cout<<-1<<'\n'; return 0; } solve(1,n); if(!ok) { cout<<-1<<'\n'; return 0; } for(int i=1;i<=n;i++) { cout<<rez[i]; } cout<<'\n'; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...