Submission #525848

#TimeUsernameProblemLanguageResultExecution timeMemory
525848DeepessonLinear Garden (IOI08_linear_garden)C++17
100 / 100
1068 ms2272 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::ios::sync_with_stdio(false); std::cin.tie(0); std::cout.tie(0); std::cin>>N>>M>>s; { for(int j=0;j!=33;++j){ for(int k=-2;k!=3;++k){ for(int u=0;u!=5;++u){ if(j&(1<<u)){ int _ = u-2; int __ = k-_; if(__>2||__<-2) goto next; } } for(int v=0;v!=2;++v){ tab[N%2][j][k+2][v]=1; prox:{} } next:{} } } } for(int i=N-1;i!=-1;--i){ for(int j=0;j!=33;++j){ for(int k=-2;k!=3;++k){ if(!(j&(1<<(k+2))))continue; bool marc=false; for(int u=0;u!=5;++u){ if(j&(1<<u)){ int _ = u-2; int __ = k-_; if(__>2||__<-2) {marc=true;goto aq;} } } aq: for(int v=0;v!=2;++v){ if(marc){tab[i%2][j][k+2][v]=0;continue;} int pente=j; int pos=i; int atual,soma; atual=soma=k; int desceu=v; 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"; }

Compilation message (stderr)

linear_garden.cpp: In function 'int main()':
linear_garden.cpp:27:21: warning: label 'prox' defined but not used [-Wunused-label]
   27 |                     prox:{}
      |                     ^~~~
linear_garden.cpp:88:21: warning: label 'proxa' defined but not used [-Wunused-label]
   88 |                     proxa:{}
      |                     ^~~~~
#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...