Submission #848333

#TimeUsernameProblemLanguageResultExecution timeMemory
848333JakobZorzHomework (CEOI22_homework)C++14
13 / 100
125 ms109264 KiB
#include<iostream> #include<vector> #include<queue> #include<algorithm> #include<set> #include<stack> #include<limits.h> #include<math.h> #include<iomanip> #include<bitset> #include<unordered_map> #include<unordered_set> #include<map> #include<cstring> #include<sstream> #pragma GCC target("popcnt") typedef long long ll; typedef long double ld; using namespace std; const int MOD=1e9+7; typedef pair<ll,ll>point; //#define x first //#define y second string str; int n; struct Node{ Node*ch1=nullptr,*ch2=nullptr; bool q=false; bool is_max=false; }; Node* parse(int&i){ Node*result=new Node; if(str[i]=='?'){ i++; n++; result->q=true; return result; } i++; result->is_max=str[i]=='a'; i+=3; result->ch1=parse(i); i++; result->ch2=parse(i); i++; return result; } pair<int,int>get(Node*node){ if(node->q) return{0,n}; int l=0,r=0; auto res1=get(node->ch1); auto res2=get(node->ch2); if(node->is_max){ l=max(res1.first,res2.first)+1; r=max(res1.second,res2.second); }else{ l=min(res1.first,res2.first); r=min(res1.second,res2.second)-1; } return{l,r}; } Node*root; int main(){ ios::sync_with_stdio(false); cout.tie(NULL); cin.tie(NULL); cin>>str; int index=0; root=parse(index); auto res=get(root); cout<<res.second-res.first<<"\n"; return 0; } /* min(min(?,?),min(?,?)) 1 max(?,max(?,min(?,?))) 2 min(max(?,?),min(?,max(?,?))) 3 */
#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...