제출 #1268588

#제출 시각아이디문제언어결과실행 시간메모리
1268588aegparentrises (BOI18_parentrises)C++20
0 / 100
136 ms327680 KiB
#include <bits/stdc++.h>
using namespace std;

#define int int64_t

constexpr int MOD = 1e9 + 7;

signed main() {
  cin.tie(0)->sync_with_stdio(0);
  int p, t;
  cin >> p >> t;

  vector<vector<vector<int>>> dp(301,
                                 vector<vector<int>>(610, vector<int>(610, 0)));

  dp[0][0][0] = 1;
  for (int i = 1; i <= 300; i++) {
    for (int j = 0; j < 610; j++) {
      for (int k = j; k < 610; k++) {
        if (j + 2 < 610 && k + 1 < 610)
          dp[i][j][k] += dp[i - 1][j + 2][k + 1];
        if (j == 0 && k + 1 < 610) {
          dp[i][j][k] += dp[i - 1][j + 1][k + 1];
          dp[i][j][k] += dp[i - 1][j][k + 1];
        }
        if (j - 1 >= 0 && k - 2 >= 0)
          dp[i][j][k] += dp[i - 1][j - 1][k - 2];
        dp[i][j][k] %= MOD;
      }
    }
  }

  while (t--) {
    int n;
    cin >> n;
    int ans = 0;
    for (int i = 0; i < 610; i++)
      ans += dp[n][0][i];
    ans %= MOD;
    cout << ans << '\n';
  }
}
#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...