Submission #219700

#TimeUsernameProblemLanguageResultExecution timeMemory
219700mohamedsobhi777Linear Garden (IOI08_linear_garden)C++14
0 / 100
54 ms65540 KiB
#include <bits/stdc++.h> using namespace std ; const int N = 1e6 + 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][3][3][3][3]; void normalize(int &a , int &b , int &A , int &B){ int mn = min(a , b) ; a-=mn ; b-=mn; A = max( A , a - b ) ; B = max(B , b - a) ; } long long solve2(int i , int a , int b , int A , int B){ if(dp[i][a][b][A][B]!=-1) return dp[i][a][b][A][B] ; if( a + B > 2 || b + A > 2 ) return 0 ; if(i==n){ return 1 ; } long long ret = 0 ; for(int j = 0 ; j< 2 ;j++){ int na = a + mv1[j] ; int nb = b + mv2[j] ; int tmpA = A; int tmpB = B; normalize(na , nb , tmpA , tmpB) ; char c ; if(!j) c='0' ; else c = '1' ; ret= add(ret , solve2(i+1 , na , nb , tmpA , tmpB)) ; } return dp[i][a][b][A][B] = ret ; } int solve(int i , string ss ){ if(i==n){ bool ok = 1 ; for(int j = 0 ; j < n ;j ++){ int L = 0 , P = 0; for(int k = j ; k < n;k++){ if(ss[k]=='L')L++ ; else P++ ; if(abs(L - P) > 2){ ok = 0 ; } } } ans+=ok ; return 0 ; } else{ solve(i+1 , ss + "L") ; solve(i+1 , ss+ "P") ; } } 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 a = 0, b =0; int A = 0, B = 0; for(int i = 0 ;i < n;i++){ if(s[i] == 'L'){ b++ ; normalize(a , b , A , B) ; }else{ a++; normalize(a , b , A , B) ; ans+=solve2(i+1 , a , b , A , B) ; // solve(i+1 , s.substr(0 , i+1) ) ; } } cout<<add(ans , 1); return 0 ; }

Compilation message (stderr)

linear_garden.cpp: In function 'long long int solve2(int, int, int, int, int)':
linear_garden.cpp:38:14: warning: variable 'c' set but not used [-Wunused-but-set-variable]
         char c ; 
              ^
linear_garden.cpp: In function 'int solve(int, std::__cxx11::string)':
linear_garden.cpp:66:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
#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...