Submission #1280577

#TimeUsernameProblemLanguageResultExecution timeMemory
1280577FaggiHomework (CEOI22_homework)C++20
100 / 100
117 ms113160 KiB
#include <bits/stdc++.h> #define ll long long #define sz(x) int(x.size()) #define forn(i,n) for(i=0; i<n; i++) #define all(x) x.begin(),x.end() #define pb push_back #define mp make_pair #define fr first #define se second using namespace std; string s; ll n=0; vector<ll>mids; pair<ll,ll>calc(ll l, ll r) { if(l==r) return {1,n}; pair<ll,ll>a=calc(l+4,mids[l]-1), b=calc(mids[l]+1,r-1); if(s[l+1]=='i') return {min(a.fr,b.fr),n-((n-a.se+1)+(n-b.se+1))+1}; return {a.fr+b.fr,max(a.se,b.se)}; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); ll i; cin >> s; mids.resize(sz(s)); for(i=0; i<sz(s); i++) if(s[i]=='?') n++; stack<ll>q; for(i=0; i<sz(s); i++) { if(s[i]=='m') q.push(i); else if(s[i]==',') { mids[q.top()]=i; q.pop(); } } pair<ll,ll>a=calc(0, sz(s)-1); cout << (a.se-a.fr+1); 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...