Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- typedef long long ll;
- using namespace std;
- vector <vector <vector <ll> > > dp;
- int main(){
- int n, k;
- cin>>n>>k;
- if(k == 2){
- cout<<2;
- return 0;
- }
- dp.resize(n + 1, vector <vector <ll> > (k, vector <ll> (2)));
- dp[1][1][0] = 1;
- dp[1][1][1] = 1;
- for(int i = 2; i <= n; i++){
- for(int j = 1; j < k; j++){
- if(j == 1){
- for(int c = 1; c < k; c++){
- dp[i][j][0] += dp[i - 1][c][1];
- dp[i][j][1] += dp[i - 1][c][0];
- }
- }
- else{
- dp[i][j][0] += dp[i - 1][j - 1][0];
- dp[i][j][1] += dp[i - 1][j - 1][1];
- }
- }
- }
- ll ans = 0;
- for(int i = 1; i < k; i++){
- ans += dp[n][i][0];
- ans += dp[n][i][1];
- }
- cout<<ans<<"\n";
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment