Submission #525844

#TimeUsernameProblemLanguageResultExecution timeMemory
525844DeepessonLinear Garden (IOI08_linear_garden)C++17
85 / 100
1572 ms3196 KiB
#include <bits/stdc++.h> int N,M; #define MAX 1100000 int tab[2][33][5][2]; int base=2; std::string s; int main() { std::cin>>N>>M>>s; { for(int j=0;j!=33;++j){ for(int k=-2;k!=3;++k){ for(int v=0;v!=2;++v){ for(int u=0;u!=5;++u){ if(j&(1<<u)){ int _ = u-2; int __ = k-_; if(__>2||__<-2) goto prox; } }{ tab[N%2][j][k+2][v]=1;} prox:{} } } } } for(int i=N-1;i!=-1;--i){ for(int j=0;j!=33;++j){ for(int k=-2;k!=3;++k){ for(int v=0;v!=2;++v){ int pente=j; int pos=i; int atual,soma; atual=soma=k; int desceu=v; for(int u=0;u!=5;++u){ if(j&(1<<u)){ int _ = u-2; int __ = k-_; if(__>2||__<-2) {tab[pos%2][pente][soma+2][desceu]=0;goto proxa;} } } if(v){ int alpha=0,beta=0; if(atual<2){ alpha=tab[(pos+1)%2][pente|(1<<(soma+3))][soma+3][1]; } if(atual>-2){ beta=tab[(pos+1)%2][pente|(1<<(soma+1))][soma+1][1]; } tab[pos%2][pente][soma+2][desceu] = ( alpha + beta ) % M; }else { if(s[pos]=='L'){ if(atual>-2){///Aperta L tab[pos%2][pente][soma+2][desceu] = tab[(pos+1)%2][pente|(1<<(soma+1))][soma+1][0]; }else tab[pos%2][pente][soma+2][desceu]=0; }else { int alpha=0,beta=0; if(atual<2){///Aperta P alpha=tab[(pos+1)%2][pente|(1<<(soma+3))][soma+3][0]; } if(atual>-2){///Aperta L beta=tab[(pos+1)%2][pente|(1<<(soma+1))][soma+1][1]; } tab[pos%2][pente][soma+2][desceu] = ( alpha + beta ) % M; } } ///Invalido proxa:{} } } } } std::cout<<tab[0][(1<<2)][2][0]<<"\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...