Submission #127756

#TimeUsernameProblemLanguageResultExecution timeMemory
127756sealnot123Match (CEOI16_match)C++14
100 / 100
19 ms11724 KiB
#include<bits/stdc++.h>
#define x first
#define y second
#define all(x) (x).begin(),(x).end()
#define SZ(x) (int)(x).size()
#define push_back pb
#define emplace_back eb
using namespace std;
typedef long long LL;
typedef double DD;
typedef long double LD;
typedef pair<int,int> PII;
typedef pair<LL,LL> PLL;
const int N = 100007;
int dp[N][26];
char str[N], ans[N];
stack<char> sta;
int n;
void play(int l, int r){
	if(l>r) return ;
	ans[l] = '(';
	int a = dp[r][str[l]-'a'];
	ans[a] = ')';
	play(l+1, a-1); play(a+1, r);
}
int main(){
	int a,b,c,d,i,j,k,l;
	scanf("%s",str+1);
	n = strlen(str+1);
	for(i=1;i<=n;i++){
		dp[i][str[i]-'a'] = i;
		a = dp[i-1][str[i]-'a'];
		if(!a) continue;
		for(j=0;j<26;j++) dp[i][j] = max(dp[i][j], dp[a-1][j]);
	}
	// check
	for(i=1;i<=n;i++){
		if(!sta.empty() && sta.top() == str[i]) sta.pop();
		else sta.push(str[i]);
	}
	if(!sta.empty()){
		printf("-1");
		return 0;
	}
	// do ans
	play(1, n);
	printf("%s",ans+1);
	return 0;
}
/*
abbccddabbccdd
abbacabbac
accaccacca
aaaabbbb
aaabcaacba (()((())))
*/

Compilation message (stderr)

match.cpp: In function 'int main()':
match.cpp:27:8: warning: unused variable 'b' [-Wunused-variable]
  int a,b,c,d,i,j,k,l;
        ^
match.cpp:27:10: warning: unused variable 'c' [-Wunused-variable]
  int a,b,c,d,i,j,k,l;
          ^
match.cpp:27:12: warning: unused variable 'd' [-Wunused-variable]
  int a,b,c,d,i,j,k,l;
            ^
match.cpp:27:18: warning: unused variable 'k' [-Wunused-variable]
  int a,b,c,d,i,j,k,l;
                  ^
match.cpp:27:20: warning: unused variable 'l' [-Wunused-variable]
  int a,b,c,d,i,j,k,l;
                    ^
match.cpp:28:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%s",str+1);
  ~~~~~^~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...