Submission #47081712
Source Code Expand
#include <bits/stdc++.h>
#include <atcoder/convolution>
#include <atcoder/modint>
const int MOD = 998244353;
using mint = atcoder::static_modint<MOD>;
using namespace std;
#define rep(i, a, n) for (int i = a; i < (int)(n); i++)
int read() { int r; scanf("%d", &r); return r; }
int main() {
int n = read();
int m = read();
int k = read();
int l = read();
vector<mint> res(2 * m + 2, 0);
rep(i, 0, k) {
int off = read();
res[off]++;
res[2 * m + 2 - off]--;
}
// res * ((1+x+x^2)/x)^{n-1} mod (x^{2m+2}-1)
vector<mint> v(3, 1); // 1+x+x^2
auto mul = [&](const vector<mint>& a, const vector<mint>& b) { // a * b % (x^{2m+2} - 1)
vector<mint> ret = atcoder::convolution(a, b);
while ((int)ret.size() > 2 * m + 2) {
ret[(ret.size() - 1) % (2 * m + 2)] += ret.back();
ret.pop_back();
}
return ret;
};
int p = n - 1;
while (p) { // * (1+x+x^2)^{n-1}
if (p & 1) res = mul(res, v);
v = mul(v, v);
p /= 2;
}
// assert(res[(n - 1) % (2 * m + 2)].val() == 0);
mint ans = 0;
rep(i, 0, l) ans += res[(read() + (n - 1)) % (2 * m + 2)]; // off -> (off+(n-1)) % (2m+2)
printf("%d\n", ans.val());
return 0;
}
Submission Info
| Submission Time | |
|---|---|
| Task | Ex - Simple Path Counting Problem |
| User | cromarmot |
| Language | C++ 20 (gcc 12.2) |
| Score | 650 |
| Code Size | 1184 Byte |
| Status | AC |
| Exec Time | 712 ms |
| Memory | 15636 KiB |
Compile Error
Main.cpp: In function ‘int read()’:
Main.cpp:8:26: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
8 | int read() { int r; scanf("%d", &r); return r; }
| ~~~~~^~~~~~~~~~
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 650 / 650 | ||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| Sample | example_00.txt, example_01.txt, example_02.txt |
| All | example_00.txt, example_01.txt, example_02.txt, test_00.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| example_00.txt | AC | 1 ms | 3736 KiB |
| example_01.txt | AC | 1 ms | 3712 KiB |
| example_02.txt | AC | 605 ms | 13836 KiB |
| test_00.txt | AC | 8 ms | 3796 KiB |
| test_01.txt | AC | 6 ms | 3912 KiB |
| test_02.txt | AC | 7 ms | 3728 KiB |
| test_03.txt | AC | 507 ms | 15184 KiB |
| test_04.txt | AC | 660 ms | 13872 KiB |
| test_05.txt | AC | 603 ms | 13468 KiB |
| test_06.txt | AC | 284 ms | 8448 KiB |
| test_07.txt | AC | 7 ms | 3620 KiB |
| test_08.txt | AC | 658 ms | 13700 KiB |
| test_09.txt | AC | 27 ms | 3872 KiB |
| test_10.txt | AC | 181 ms | 6204 KiB |
| test_11.txt | AC | 591 ms | 13884 KiB |
| test_12.txt | AC | 558 ms | 15260 KiB |
| test_13.txt | AC | 619 ms | 14596 KiB |
| test_14.txt | AC | 679 ms | 13468 KiB |
| test_15.txt | AC | 685 ms | 15636 KiB |
| test_16.txt | AC | 712 ms | 13728 KiB |
| test_17.txt | AC | 656 ms | 13252 KiB |
| test_18.txt | AC | 655 ms | 13576 KiB |
| test_19.txt | AC | 698 ms | 14656 KiB |
| test_20.txt | AC | 698 ms | 14652 KiB |
| test_21.txt | AC | 700 ms | 14692 KiB |
| test_22.txt | AC | 696 ms | 14660 KiB |