#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |