답안 #616111

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
616111 2022-07-31T21:55:57 Z elpro123 괄호 문자열 (CEOI16_match) C++14
컴파일 오류
0 ms 0 KB
#include <bits/stdc++.h>
using namespace std;
 
const long long MAXN = 1e+7;
 
long long N;
string s;
char ans[MAXN];
 
bool check(stack<char> st, long long x){
    //mira si entra en el caso de ser una cadena vacia
	for(long long i = x; i<N; i++){
        //cout<<s[i]<<" "<<st.top()<<"\n";
		if(!st.empty() && s[i] == st.top()){//hay un par de iguales ()
            st.pop();
        }else{//no hay un par, hay otro elemento distinto
            st.push(s[i]);
        }
        //cout<<st.empty()<<"\n";
    }
	return st.empty();
}
 
long long main() {
	cin>>s;
    N=s.length();
	stack<char> st;
	for(long long i = 0; i < N; i++) {
		st.push(s[i]);
		if(check(st, i + 1)){//se habre con (
            ans[i] = '(';
        }else{//hay otro distinto
			ans[i] = ')';
			st.pop();
            //si nos quedamos sin elementos y no se completaron los pares, -1
            //o no se puede formar un par con los elementos sobrantes, -1
			if(st.empty() || st.top() != s[i]){
				cout<<"-1\n";
				return 0;
			}
			st.pop();//procedemos a verificar otro par
		}
        //cout<<st.top()<<"\n";
	}
    
	if(st.empty()){ 
        for(long long i = 0; i < N; i++){
           cout << ans[i];
        }
    }else{ 
        cout<<"-1\n";
    }

	return 0;

}

Compilation message

cc1plus: error: '::main' must return 'int'