Submission #994391

#TimeUsernameProblemLanguageResultExecution timeMemory
994391biankHomework (CEOI22_homework)C++14
53 / 100
24 ms39128 KiB
#include <bits/stdc++.h> using namespace std; #define sz(x) int(x.size()) #define all(x) begin(x),end(x) #define forsn(i,s,n) for(int i=int(s);i<int(n);i++) #define forn(i,n) for(int i=0;i<int(n);i++) #define dforsn(i,s,n) for(int i=int(n)-1;i>=int(s);i--) #define dforn(i,n) for(int i=int(n)-1;i>=0;i--) #define dbg(x) cerr<<#x<<": "<<x<<endl #define pb push_back typedef vector<int> vi; typedef pair<int, int> ii; const int MAXN=1e6+20; string s; int l[MAXN],r[MAXN]; struct Val{ int l,r,sz; int cant(){return r-l+1;} }; Val solve(int u){ if(s[u]=='?') return {1,1,1}; Val lch=solve(l[u]); Val rch=solve(r[u]); Val res; res.sz=lch.sz+rch.sz; if(s[u]=='n'){//min res.l=min(lch.l,rch.l); res.r=lch.r+rch.r-1; }else if(s[u]=='x'){//max res.l=lch.l+rch.l; res.r=max(rch.sz+lch.r,lch.sz+rch.r); }else assert(false); return res; } int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> s; memset(l, -1, sizeof l); memset(r, -1, sizeof r); stack<int> st; forn(i,sz(s)){ if(s[i]=='n'||s[i]== 'x'||s[i]=='?'){ st.push(i); }else if(s[i]==','||s[i]==')'){ int j=st.top(); st.pop(); if (l[st.top()] == -1) l[st.top()] = j; else r[st.top()] = j; } } cout<<solve(st.top()).cant()<<'\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...