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...