Submission #176041

#TimeUsernameProblemLanguageResultExecution timeMemory
176041rzbtMatch (CEOI16_match)C++14
0 / 100
2 ms376 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]; 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)); } for(int i=1;i<=n;i++){ if(obrisan[i])continue; int t=ss[i-1]-'a'; auto a=s[t].lower_bound(mp(x[i-1],-n-5)); 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; 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:23: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...