This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include<iostream>
using namespace std;
string e;
int poz;
pair<pair<int,int>,int> famax(pair<pair<int,int>,int> x, pair<pair<int,int>,int> y)
{
if(x.second==-1)
return y;
if(y.second==-1)
return x;
return {{x.first.first+y.first.first, x.second+y.second - min(x.second-x.first.second,y.second-y.first.second)},x.second+y.second};
}
pair<pair<int,int>,int> famin(pair<pair<int,int>,int> x, pair<pair<int,int>,int> y)
{
if(x.second==-1)
return y;
if(y.second==-1)
return x;
return {{min(x.first.first,y.first.first), x.first.second+y.first.second-1},x.second+y.second};
}
pair<pair<int,int>,int> mare()
{
if(poz>=(int)e.size())
return {{-1,-1},-1};
if(e[poz]=='?')
{
poz++;
return {{1,1},1};
}
else
{
if(e[poz+1]=='a')///max
{
//cout<<poz<<" max\n";
poz += 4;
pair<pair<int,int>,int> aux = mare();
poz++;
aux = famax(aux,mare());
poz++;
return aux;
}
else///min
{
//cout<<poz<<" min\n";
poz += 4;
pair<pair<int,int>,int> aux = mare();
poz++;
aux = famin(aux,mare());
poz++;
return aux;
}
}
}
signed main()
{
ios_base::sync_with_stdio(0);cin.tie(0);
cin>>e;
pair<pair<int,int>,int> rez = mare();
cout<<rez.first.second-rez.first.first+1;
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... |