답안 #1032715

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1032715 2024-07-24T06:44:43 Z 김은성(#10965) 괄호 문자열 (CEOI16_match) C++17
10 / 100
0 ms 348 KB
#include <bits/stdc++.h>
using namespace std;
char s[100009], t[100009];
int n;
bool possible(int idx, vector<char> st){
    int i;
    for(i=idx; i<n; i++){
        if(!st.empty() && st.back() == s[i])
            st.pop_back();
        else
            st.push_back(s[i]);
    }
    return st.empty();
}
bool inverse(int idx, vector<char> vec){
    int i, j = 0;
    vector<char> st;
    for(i=n-1; i>=idx; i--){
        if(j < vec.size() && vec[j] == s[i])
            j++;
        else{
            if(!st.empty() && st.back() == s[i])
                st.pop_back();
            else
                st.push_back(s[i]);
        }
        if(j==vec.size())
            return 1;
    }
    return 0;
}
int main(){
    int i;
    scanf(" %s", s);
    n = strlen(s);
    vector<char> st;
    if(!possible(0, st)){
        printf("-1\n");
        return 0;
    }
    for(i=0; i<n; i++){
        st.push_back(s[i]);
        t[i] = '(';
        if(st.size()>1 && st[st.size()-2] == s[i]){
            if(!inverse(i+1, st)){
                t[i] = ')';
                st.pop_back();
                st.pop_back();
            }
        }
    }
    printf("%s\n", t);
    return 0;
}

Compilation message

match.cpp: In function 'bool inverse(int, std::vector<char>)':
match.cpp:19:14: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   19 |         if(j < vec.size() && vec[j] == s[i])
      |            ~~^~~~~~~~~~~~
match.cpp:27:13: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   27 |         if(j==vec.size())
      |            ~^~~~~~~~~~~~
match.cpp: In function 'int main()':
match.cpp:34:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   34 |     scanf(" %s", s);
      |     ~~~~~^~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Incorrect 0 ms 348 KB Output isn't correct
5 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Incorrect 0 ms 348 KB Output isn't correct
5 Halted 0 ms 0 KB -