Submission #537595

#TimeUsernameProblemLanguageResultExecution timeMemory
537595tqbfjotldSecurity Gate (JOI18_security_gate)C++14
12 / 100
5049 ms300 KiB
#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;
    if (cc==0){
        vector<bool>tt;
        for (int x = 0; x<s.size(); x++){
            tt.push_back(s[x]=='(');
        }
        if (checkbr(tt))return true;
    }
    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 (stderr)

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:30:26: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   30 |         for (int x = 0; x<s.size(); x++){
      |                         ~^~~~~~~~~
securitygate.cpp:35:24: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   35 |     for (int st = 0; st<s.size(); st++){
      |                      ~~^~~~~~~~~
securitygate.cpp:36:29: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   36 |         for (int en = st; en<s.size(); en++){
      |                           ~~^~~~~~~~~
securitygate.cpp:47:37: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   47 |                 for (int x = en+1; x<s.size(); x++){
      |                                    ~^~~~~~~~~
securitygate.cpp: At global scope:
securitygate.cpp:62:2: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   62 |  main(){
      |  ^~~~
securitygate.cpp: In function 'int main()':
securitygate.cpp:72:26: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   72 |         for (int y = 0; y<pos.size(); y++){
      |                         ~^~~~~~~~~~~
securitygate.cpp:64:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   64 |     scanf("%d",&n);
      |     ~~~~~^~~~~~~~~
securitygate.cpp:68:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   68 |         scanf(" %c",&str[x]);
      |         ~~~~~^~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...