제출 #640876

#제출 시각아이디문제언어결과실행 시간메모리
640876AlexandruabcdeHomework (CEOI22_homework)C++14
100 / 100
229 ms92012 KiB
#include <bits/stdc++.h> using namespace std; struct Node { int st, dr; int sz; Node () { st = 1, dr = 0; sz = 0; } }; string S; int pos = 0; Node Join (Node a, Node b, bool op) { Node ans; ans.sz = a.sz + b.sz; if (op == false) { ans.st = min(a.st, b.st); ans.dr = a.dr + b.dr - 1; } else { ans.st = a.st + b.st; ans.dr = max(a.dr + b.sz, a.sz + b.dr); } ans.sz = a.sz + b.sz; return ans; } Node Eval () { if (S[pos] == '?') { Node ans; ans.st = 1, ans.dr = 1, ans.sz = 1; return ans; } bool op = 0; if (S[pos] == 'm' && S[pos+1] == 'a' && S[pos+2] == 'x') op = 1; Node a, b; pos += 4; a = Eval(); pos += 2; b = Eval(); ++ pos; return Join(a, b, op); } int main () { cin >> S; Node ans = Eval(); cout << ans.dr - ans.st + 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...