QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#626654 | #8049. Equal Sums | dspt | RE | 0ms | 1632kb | C++23 | 1019b | 2024-10-10 11:26:02 | 2024-10-10 11:26:03 |
Judging History
answer
#include <stdio.h>
const int p(998244353);
int b[501][2], c[501][2], a[501][501][1003];
#define f(i, j, k) a[i][j][k + 501]
void add(int &x, const int y) { x = x + y < p ? x + y : x + y - p; }
int main()
{
int n, m; scanf("%d%d", &n, &m);
for (int i(1); i <= n; ++i) scanf("%d%d", &b[i][0], &b[i][1]);
for (int i(1); i <= m; ++i) scanf("%d%d", &c[i][0], &c[i][1]);
f(0, 0, 0) = 1; f(0, 0, 1) = p - 1;
for (int i(0); i <= n; ++i)
{
for (int j(0); j <= m; ++j)
{
for (int k(-500); k <= 500; ++k)
{
add(f(i, j, k), f(i, j, k - 1));
if (k < 0) add(f(i + 1, j, k + b[i + 1][0]), f(i, j, k)), add(f(i + 1, j, k + b[i + 1][1] + 1), p - f(i, j, k));
else add(f(i, j + 1, k - c[j + 1][1]), f(i, j, k)), add(f(i, j + 1, k - c[j + 1][0] + 1), p - f(i, j, k));
}
if (i && j) printf("%d ", f(i, j, 0));
}
if (i) putchar('\n');
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 1632kb
input:
2 3 1 2 2 3 1 4 2 2 1 3
output:
2 0 0 3 4 4
result:
ok 6 numbers
Test #2:
score: -100
Runtime Error
input:
500 500 19 458 1 480 7 485 50 461 12 476 15 461 48 466 40 453 46 467 9 458 27 478 26 472 46 459 29 490 6 500 17 487 48 484 28 472 28 459 25 480 4 491 29 481 36 460 2 491 44 499 22 473 20 458 4 483 27 471 2 496 11 461 43 450 2 478 37 466 15 459 42 482 7 451 19 455 2 453 47 475 48 450 1 474 46 471 9 4...
output:
411 79401 9145270 673005095 180581065 984223118 586589234 293043270 404363796 865361724 665487988 118838806 926189944 226338288 521479857 808644951 786041288 340769021 177100 21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...