이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
#define ll long long
#define pb push_back
#define mp make_pair
using namespace std;
set<int>indexes[26];
string code;
int n;
bool check_valid() {
if(n%2==1) return false;
stack<char>st;
for(int i=0;i<n;i++) {
if(st.empty()) st.push(code[i]);
else if(!st.empty() && st.top() == code[i]) st.pop();
else if(!st.empty() && st.top() != code[i]) st.push(code[i]);
}
if(st.size() == 0) return true;
else return false;
}
int main() {
cin>>code;
n = code.length();
for(int i=0;i<n;i++) {
indexes[int(code[i]-'a')].insert(i);
}
string seq = code;
if(!check_valid()) {
cout<<"-1\n";
}
else {
for(int i=0;i<n;i++) {
if(seq[i] != '(' && seq[i] != ')') {
int ind = int(code[i]-'a');
int st = i;
int last = *(indexes[ind].rbegin());
seq[st] = '(';
seq[last] = ')';
indexes[ind].erase(i);
indexes[ind].erase(last);
}
}
cout<<seq<<"\n";
}
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |