Submission #219836

#TimeUsernameProblemLanguageResultExecution timeMemory
219836mohamedsobhi777Linear Garden (IOI08_linear_garden)C++14
6 / 100
203 ms65536 KiB
#include <bits/stdc++.h> using namespace std ; const int N = 5e5 + 7 ; long long n , mod , ans ; string s ; int mv2[2] = {0 , 1} , mv1[2] = {1 , 0} ; long long add (long long a , long long b){ return (a%mod + b%mod + mod) %mod ; } int dp[N][2][2][2]; int smart(int i , bool l , bool d , bool b, int val){ if(dp[i][l][d][b]!=-1)return dp[i][l][d][b] ; if(i > n)return 0 ; if(i==n){ return 1 ; } int ret = 0 ; ret= add( ret , smart(i+1 , !l , 0 , d , val* 10 + 1-l) ) ; if(!b){ if(d){ ret= add(ret , smart(i+2 , !l , 1 , 0 , (val*10 + 1- l)*10 + 1-l ) ) ; }else{ ret= add( ret , smart(i+2 , !l , 1 ,0 , (val*10 + 1-l) * 10 + 1-l ) ) ; } } return dp[i][l][d][b] = ret ; } int smart_solve(int i , int l , int d , int b){ if(!l)b =1 ; int ret = smart(i , l , d , b , 0); return ret ; } int main(){ memset(dp , -1 , sizeof dp) ; ios_base::sync_with_stdio(0) ; cin.tie(0) ; //freopen("in.in" , "r" , stdin) ; cin>>n>>mod ; cin>> s ; int l = 1 ; int d = 0 ; int bad = 0 ; int val = 0 ; for(int i = 0 ;i < n;i++){ if(s[i] == 'L'){ l = 0 ; val = val*10 + l ; }else{ val = val * 10 + 1 ; int cant = 0 ; if(i > 1){ if(s[i-1]=='L' && s[i-2] == 'L'){ cant = 1 ; } } if(cant)continue ; if(i > 1 && l==1)d = 1 ; ans=add (ans , smart_solve(i , l , d , !l ) ); l = 1 ; } } cout<<add(ans , 1); return 0 ; }

Compilation message (stderr)

linear_garden.cpp: In function 'int main()':
linear_garden.cpp:49:9: warning: unused variable 'bad' [-Wunused-variable]
     int bad = 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...