Submission #1236589

#TimeUsernameProblemLanguageResultExecution timeMemory
1236589AlgorithmWarriorHomework (CEOI22_homework)C++20
100 / 100
174 ms132600 KiB
#include <bits/stdc++.h>

using namespace std;

struct answer{
    int l,r,n;
};

answer solve(string& sir,int& id){
    if(sir[id]=='?'){
        ++id;
        return {1,1,1};
    }
    bool tip;
    if(sir[id+1]=='a')
        tip=1;
    else
        tip=0;
    id+=4;
    answer ans1=solve(sir,id);
    ++id;
    answer ans2=solve(sir,id);
    ++id;
    int l,r,n;
    if(tip){
        l=ans1.l+ans2.l;
        r=max(ans1.n+ans2.r,ans1.r+ans2.n);
    }
    else{
        l=min(ans1.l,ans2.l);
        r=ans1.r+ans2.r-1;
    }
    n=ans1.n+ans2.n;
    return {l,r,n};
}

int main()
{
    string s;
    int id=0;
    cin>>s;
    answer ans=solve(s,id);
    cout<<ans.r-ans.l+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...