Submission #745454

#TimeUsernameProblemLanguageResultExecution timeMemory
745454Tenis0206Match (CEOI16_match)C++11
37 / 100
2090 ms26416 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; stack<int> s; for(int i=st; i<=dr; i++) { ++fr[v[i]]; if(s.empty() || v[s.top()] != v[i]) { s.push(i); } else { s.pop(); } if(i!=st && v[i]==v[st] && s.empty()) { 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; }

Compilation message (stderr)

match.cpp: In function 'void solve(int, int)':
match.cpp:23:9: warning: unused variable 'nrimp' [-Wunused-variable]
   23 |     int nrimp = 0;
      |         ^~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...