結果
問題 | No.2807 Have Another Go (Easy) |
ユーザー |
![]() |
提出日時 | 2024-07-12 21:54:48 |
言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 12 ms / 3,000 ms |
コード長 | 1,949 bytes |
コンパイル時間 | 2,771 ms |
コンパイル使用メモリ | 250,384 KB |
実行使用メモリ | 7,292 KB |
最終ジャッジ日時 | 2024-07-12 21:54:54 |
合計ジャッジ時間 | 4,146 ms |
ジャッジサーバーID (参考情報) |
judge6 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 46 |
ソースコード
#include <bits/stdc++.h>#ifdef LOCAL#include <debug.hpp>#else#define debug(...) void(0)#endiftemplate <class T> std::istream& operator>>(std::istream& is, std::vector<T>& v) {for (auto& e : v) {is >> e;}return is;}template <class T> std::ostream& operator<<(std::ostream& os, const std::vector<T>& v) {for (std::string_view sep = ""; const auto& e : v) {os << std::exchange(sep, " ") << e;}return os;}template <class T, class U = T> bool chmin(T& x, U&& y) {return y < x and (x = std::forward<U>(y), true);}template <class T, class U = T> bool chmax(T& x, U&& y) {return x < y and (x = std::forward<U>(y), true);}template <class T> void mkuni(std::vector<T>& v) {std::ranges::sort(v);auto result = std::ranges::unique(v);v.erase(result.begin(), result.end());}template <class T> int lwb(const std::vector<T>& v, const T& x) {return std::distance(v.begin(), std::ranges::lower_bound(v, x));}#include <atcoder/modint>using ll = long long;using namespace std;using mint = atcoder::modint998244353;int main() {ios::sync_with_stdio(false);cin.tie(nullptr);cout << fixed << setprecision(15);int N, M, K;cin >> N >> M >> K;vector<mint> dp(2 * N, 0);dp[0] = 1;for (int i = 0; i < 2 * N; i++) {for (int j = 1; j <= 6 and i + j < 2 * N; j++) {dp[i + j] += dp[i];}}auto query = [&](int C) -> mint {mint res = 0;for (int i = max(0, 2 * N - 6); i < 2 * N; i++) {res += dp[C] * dp[i - C] * (i + 6 - 2 * N + 1);if (C + N <= i) res += dp[C + N] * dp[i - (C + N)] * (i + 6 - 2 * N + 1);if (C + N <= i) res -= dp[C] * dp[N] * dp[i - (C + N)] * (i + 6 - 2 * N + 1);}return res;};for (; K--;) {int C;cin >> C;cout << query(C).val() << "\n";}return 0;}