Submission #249227

#TimeUsernameProblemLanguageResultExecution timeMemory
249227eohomegrownappsLinear Garden (IOI08_linear_garden)C++14
40 / 100
1597 ms62976 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; ll m; ll dp(int len, int s, int e, int cur){ //can we go up? //cout<<len<<" "<<s<<" "<<e<<" "<<cur<<'\n'; if (!(s<=cur&&cur<=e)||(e-s>2)){ return 0; } if (len==0){ return 1; } if (e-s<2){ return (dp(len-1,min(s,cur-1),e,cur-1)+dp(len-1,s,max(e,cur+1),cur+1))%m; } else { return ((cur-1<s?0:dp(len-1,s,e,cur-1))+(cur+1>e?0:dp(len-1,s,e,cur+1)))%m; } } int main(){ int n; cin>>n; cin>>m; int curmin = 0; int curmax = 0; int curval = 0; ll ind = 1; for (int i = 0; i<n; i++){ char c; cin>>c; bool val = (c=='P'); if (val){ ind+=dp(n-i-1,min(curmin,curval-1),max(curmax,curval-1),curval-1); ind%=m; curval++; } else { curval--; } curmin=min(curmin,curval); curmax=max(curmax,curval); } cout<<ind<<'\n'; }
#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...
#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...
#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...
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...