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
AC × 3
AC × 26
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