Raslboyy

3006

Sep 12th, 2019
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.74 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <vector>
  4.  
  5. using namespace std;
  6.  
  7. int main() {
  8.     ifstream fin("input.txt");
  9.     ofstream fout("output.txt");
  10.  
  11.     int n;
  12.     fin >> n;
  13.     vector<vector<long long>> dp(2, vector<long long>(n+1));
  14.     dp[0][0] = 1LL;
  15.     for (int i = 1; i <= n; i++) {
  16.         for (int k = 0; k < i; k++) {
  17.             dp[0][i] += dp[0][k] * dp[0][i - k - 1];
  18.             dp[0][i] %= (1000 * 1000 * 1000 + 7);
  19.             dp[1][i] += dp[0][k] * dp[1][i - k - 1]
  20.                 + dp[0][k] * dp[0][i - k - 1] + dp[0][k] * dp[1][i - k - 1]
  21.                 + dp[1][k] * dp[0][i - k - 1] + dp[1][k] * dp[1][i - k - 1];
  22.             dp[1][i] %= (1000 * 1000 * 1000 + 7);
  23.         }
  24.     }
  25.     fout << (dp[0][n] + dp[1][n]) % (1000 * 1000 * 1000 + 7) << endl;
  26.  
  27.     fin.close();
  28.     fout.close();
  29.     return 0;
  30. }
Advertisement
Add Comment
Please, Sign In to add comment