답안 #115240

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
115240 2019-06-06T08:28:30 Z 김세빈(#2863) 괄호 문자열 (CEOI16_match) C++14
0 / 100
2 ms 256 KB
#include <bits/stdc++.h>

using namespace std;

char s[101010];
int dp[101010];
int n;

void die()
{
	printf("-1\n");
	exit(0);
}

void make(int p)
{
	int i;
	
	s[p] = '('; s[dp[p]] = ')';
	
	for(i=p+1; i<dp[p]; i=dp[i]+1){
		make(i);
		if(dp[i] == -1) die();
	}
}

int main()
{
	int i, j;
	
	scanf("%s", s);
	
	n = strlen(s);
	
	for(i=n-1; i>=0; i--){
		dp[i] = -1;
		for(j=i+1; j<n; j=dp[j]+1){
			if(s[i] == s[j]) dp[i] = j;
			if(dp[j] == -1) break;
		}
	}
	
	for(i=0; i<n; i=dp[i]+1){
		make(i);
		if(dp[i] == -1) die();
	}
	
	printf("%s\n", s);
	
	return 0;
}

Compilation message

match.cpp: In function 'int main()':
match.cpp:31:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%s", s);
  ~~~~~^~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 256 KB Output is correct
2 Incorrect 2 ms 256 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 256 KB Output is correct
2 Incorrect 2 ms 256 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 256 KB Output is correct
2 Incorrect 2 ms 256 KB Output isn't correct
3 Halted 0 ms 0 KB -