Submission #1268295

#TimeUsernameProblemLanguageResultExecution timeMemory
1268295chfHomework (CEOI22_homework)C++20
100 / 100
65 ms54212 KiB
#include <bits/stdc++.h>
using namespace std;

string s;
int pos;
int N;

pair<int,int> dfs(){
    if(s[pos]=='?'){
        pos++;
        return {1,N};
    }
    // safe check "min" or "max"
    bool isMin = (s.compare(pos,3,"min")==0);
    pos += 3; // skip "min"/"max"
    pos++;    // skip '('
    auto A = dfs();
    pos++;    // skip ','
    auto B = dfs();
    pos++;    // skip ')'
    long long L,R;
    if(isMin){
        L = min(A.first, B.first);
        R = A.second + B.second - N - 1;
    } else {
        L = A.first + B.first;
        R = max(A.second, B.second);
    }
    return {(int)L,(int)R};
}

int main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cin>>s;
    N = count(s.begin(), s.end(), '?');
    pos = 0;
    auto ans = dfs();
    int L = ans.first, R = ans.second;
    if(R < L) cout<<0<<"\n";
    else cout << (R - L + 1) << "\n";
    return 0;
}
#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...