Submission #297150

#TimeUsernameProblemLanguageResultExecution timeMemory
297150Bill_00Linear Garden (IOI08_linear_garden)C++14
75 / 100
258 ms65540 KiB
#include <bits/stdc++.h> #define pb push_back #define pp push #define ff first #define ss second #define ll long long #define mp make_pair using namespace std; unordered_map<long long,unordered_map<long long,unordered_map<long long,long long> > >u; int main(){ long long n,m,o=0; cin >> n >> m; string s; cin >> s; u[0][0][0]=1; for(int i=1;i<=n;i++){ int o=0; o+=u[i][2][0]=(u[i-1][1][0]+u[i-1][1][-1])%m; o+=u[i][2][-1]=u[i-1][1][-2]; o+=u[i][1][0]=(u[i-1][0][0]+u[i-1][0][-1])%m; o+=u[i][1][-1]=(u[i-1][2][0]+u[i-1][0][-2])%m; o+=u[i][1][-2]=u[i-1][2][-1]; o+=u[i][0][-1]=(u[i-1][0][0]+u[i-1][1][0])%m; o+=u[i][0][-2]=(u[i-1][0][-1]+u[i-1][1][-1])%m; } int mx=0,mn=0; long long ans=0; for(int i=0;i<n-1;i++){ if(s[i]=='L'){ mx+=1; mn=min(mn+1,0); continue; } int mx_=mx+1; int mn_=min(mn+1,0); for(int j=0;j<=2-mx_;j++){ for(int k=0;k>=-2-mn_;k--){ ans=(ans+u[n-i-1][j][k])%m; //cout << n-i-1 << ' ' << j << ' ' << k << ' ' << u[n-i-1][j][k] << endl; } } mx=max(0,mx-1); mn--; } if(s[n-1]=='P'){ if(mx!=2) ans++; } ans++; cout << ans%m; }

Compilation message (stderr)

linear_garden.cpp: In function 'int main()':
linear_garden.cpp:11:16: warning: unused variable 'o' [-Wunused-variable]
   11 |  long long n,m,o=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...
#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...