답안 #537589

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
537589 2022-03-15T09:24:29 Z tqbfjotld Security Gate (JOI18_security_gate) C++14
0 / 100
0 ms 212 KB
#include <bits/stdc++.h>
using namespace std;

bool checkbr(vector<bool> s){
    int t = 0;
    for (int x = 0; x<s.size(); x++){
        if (s[x]) t++;
        else t--;
        if (t<0) return false;
    }
    return t==0;
}

bool valid(string s){
    //printf("checking %s\n",s.c_str());
    vector<int> pref;
    for (int x = 0; x<s.size(); x++){
        if (s[x]=='(')
            pref.push_back(1);
        else pref.push_back(-1);
        if (pref.size()>1){
            pref.back() = (*----pref.end()) + pref.back();
        }

    }
    int cc = pref.back();
    if (cc&1) return false;
    for (int st = 0; st<s.size(); st++){
        for (int en = st; en<s.size(); en++){
            int t2 = cc - 2*(pref[en]-(st==0?0:pref[st-1]));
            if (t2!=0) continue;
            else{
                vector<bool> tt;
                for (int x = 0; x<st; x++){
                    tt.push_back(s[x]=='(');
                }
                for (int x = st; x<=en; x++){
                    tt.push_back(s[x]==')');
                }
                for (int x = en+1; x<s.size(); x++){
                    tt.push_back(s[x]=='(');
                }
                if (checkbr(tt)){
                    return true;
                }
            }
        }
    }
    return false;
}

string str;
int ans = 0;

 main(){
    int n;
    scanf("%d",&n);
    str.resize(n);
    vector<int> pos;
    for (int x = 0; x<n; x++){
        scanf(" %c",&str[x]);
        if (str[x]=='x') pos.push_back(x);
    }
    for (int x = 0; x<(1<<(pos.size())); x++){
        for (int y = 0; y<pos.size(); y++){
            str[pos[y]] = (x&(1<<y))?'(':')';
        }
        if (valid(str)){
            ans++;
        }
    }
    printf("%d",ans);
}

Compilation message

securitygate.cpp: In function 'bool checkbr(std::vector<bool>)':
securitygate.cpp:6:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<bool>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    6 |     for (int x = 0; x<s.size(); x++){
      |                     ~^~~~~~~~~
securitygate.cpp: In function 'bool valid(std::string)':
securitygate.cpp:17:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   17 |     for (int x = 0; x<s.size(); x++){
      |                     ~^~~~~~~~~
securitygate.cpp:28:24: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   28 |     for (int st = 0; st<s.size(); st++){
      |                      ~~^~~~~~~~~
securitygate.cpp:29:29: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   29 |         for (int en = st; en<s.size(); en++){
      |                           ~~^~~~~~~~~
securitygate.cpp:40:37: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   40 |                 for (int x = en+1; x<s.size(); x++){
      |                                    ~^~~~~~~~~
securitygate.cpp: At global scope:
securitygate.cpp:55:2: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   55 |  main(){
      |  ^~~~
securitygate.cpp: In function 'int main()':
securitygate.cpp:65:26: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   65 |         for (int y = 0; y<pos.size(); y++){
      |                         ~^~~~~~~~~~~
securitygate.cpp:57:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   57 |     scanf("%d",&n);
      |     ~~~~~^~~~~~~~~
securitygate.cpp:61:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   61 |         scanf(" %c",&str[x]);
      |         ~~~~~^~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 212 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 212 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 212 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 212 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 212 KB Output isn't correct
2 Halted 0 ms 0 KB -