Submission #176051

#TimeUsernameProblemLanguageResultExecution timeMemory
176051rzbtMatch (CEOI16_match)C++14
10 / 100
2 ms380 KiB
#include <bits/stdc++.h> #define mp make_pair #define pb push_back #define F first #define S second #define all(x) x.begin(),x.end() #define MAXN 100005 typedef long long ll; using namespace std; int n; char ss[MAXN],res[MAXN]; int x[MAXN]; set<pair<int,int> > s[30]; stack<int > tmin; int tx; bool obrisan[MAXN]; int main() { scanf("%s",ss); n=strlen(ss); for(int i=1;i<=n;i++){ int t=ss[i-1]-'a'; tx^=(1<<t); x[i]=tx; s[t].insert(mp(tx,-i)); } tmin.push(n+5); for(int i=1;i<=n;i++){ if(obrisan[i])continue; while(i>tmin.top())tmin.pop(); int t=ss[i-1]-'a'; auto a=s[t].lower_bound(mp(x[i-1],-tmin.top())); if(a==s[t].end() || a->F!=x[i-1]){ printf("-1"); return 0; } //printf(" %d %d\n",i,-(a->S)); res[i-1]='('; res[-(a->S)-1]=')'; obrisan[i]=true; obrisan[-(a->S)]=true; tmin.push(-(a->S)); s[t].erase(a); s[t].erase(mp(x[i],i)); } printf("%s",res); return 0; }

Compilation message (stderr)

match.cpp: In function 'int main()':
match.cpp:24:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%s",ss);
     ~~~~~^~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...