提出 #64180799


ソースコード 拡げる

#include <bits/stdc++.h>
using namespace std;

constexpr int mod = 998244353;
int Add(int x, int y){ return (x + y) >= mod ? (x + y - mod) : (x + y); }
int Sub(int x, int y){ return (x - y) < 0 ? (x - y + mod) : (x - y); }
int Mul(int x, int y){ return 1ll * x * y % mod; }

const int N = 1e6 + 5;
int n, m, L1, R1, L2, R2, fact[N << 1], inv[N << 1];

int binom(int n, int m){ return n < m ? 0 : Mul(fact[n], Mul(inv[m], inv[n - m])); }

int F(int n, int m){ return Sub(binom(n + m + 2, n + 1), 1); }
int G(int n, int m){ return Sub(binom(n + m + 4, n + 2), Add(Mul(n + 2, m + 2), 1)); }

signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0), cout.tie(0);
    cin >> n >> m >> L1 >> R1 >> L2 >> R2;
    fact[0] = inv[0] = fact[1] = inv[1] = 1;
    for(int i=2;i<=(n+m+4);i++){
        fact[i] = Mul(fact[i - 1], i);
        inv[i] = Mul(inv[mod % i], mod - mod / i);
    }
    for(int i=1;i<=(n+m+4);i++) inv[i] = Mul(inv[i], inv[i - 1]);
    int ans = G(n, m);
    ans = Sub(ans, G(R1 - L1, R2 - L2));
    for(int i=L1;i<=R1;i++) ans = Sub(ans, Mul(F(i, L2 - 1), F(n - i, m - L2)));
    for(int i=L2;i<=R2;i++) ans = Sub(ans, Mul(F(L1 - 1, i), F(n - L1, m - i)));
    for(int i=L1;i<=R1;i++) ans = Sub(ans, Mul(F(n - i, m - R2 - 1), F(i - L1, R2 - L2)));
    for(int i=L2;i<=R2;i++) ans = Sub(ans, Mul(F(n - R1 - 1, m - i), F(R1 - L1, i - L2)));
    cout << ans << '\n';
    return 0;
}

// Written by xiezheyuan

提出情報

提出日時
問題 E - Snuke's Kyoto Trip
ユーザ xiezheyuan
言語 C++ 20 (gcc 12.2)
得点 800
コード長 1424 Byte
結果 AC
実行時間 66 ms
メモリ 19268 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 800 / 800
結果
AC × 3
AC × 65
セット名 テストケース
Sample 00-sample-001.txt, 00-sample-002.txt, 00-sample-003.txt
All 00-sample-001.txt, 00-sample-002.txt, 00-sample-003.txt, 01-random-001.txt, 01-random-002.txt, 01-random-003.txt, 01-random-004.txt, 01-random-005.txt, 01-random-006.txt, 01-random-007.txt, 01-random-008.txt, 01-random-009.txt, 01-random-010.txt, 01-random-011.txt, 01-random-012.txt, 01-random-013.txt, 01-random-014.txt, 01-random-015.txt, 02-large-001.txt, 02-large-002.txt, 02-large-003.txt, 02-large-004.txt, 02-large-005.txt, 02-large-006.txt, 02-large-007.txt, 02-large-008.txt, 02-large-009.txt, 02-large-010.txt, 02-large-011.txt, 02-large-012.txt, 02-large-013.txt, 02-large-014.txt, 02-large-015.txt, 03-small-001.txt, 03-small-002.txt, 03-small-003.txt, 03-small-004.txt, 03-small-005.txt, 03-small-006.txt, 03-small-007.txt, 03-small-008.txt, 03-small-009.txt, 03-small-010.txt, 03-small-011.txt, 03-small-012.txt, 03-small-013.txt, 03-small-014.txt, 03-small-015.txt, 04-corner-001.txt, 04-corner-002.txt, 04-corner-003.txt, 04-corner-004.txt, 04-corner-005.txt, 04-corner-006.txt, 04-corner-007.txt, 04-corner-008.txt, 04-corner-009.txt, 04-corner-010.txt, 04-corner-011.txt, 04-corner-012.txt, 04-corner-013.txt, 04-corner-014.txt, 04-corner-015.txt, 05-hand-001.txt, 05-hand-002.txt
ケース名 結果 実行時間 メモリ
00-sample-001.txt AC 1 ms 3492 KiB
00-sample-002.txt AC 1 ms 3536 KiB
00-sample-003.txt AC 1 ms 3448 KiB
01-random-001.txt AC 22 ms 11632 KiB
01-random-002.txt AC 6 ms 5736 KiB
01-random-003.txt AC 13 ms 8780 KiB
01-random-004.txt AC 24 ms 11296 KiB
01-random-005.txt AC 11 ms 7004 KiB
01-random-006.txt AC 15 ms 9132 KiB
01-random-007.txt AC 14 ms 10204 KiB
01-random-008.txt AC 16 ms 11272 KiB
01-random-009.txt AC 13 ms 8584 KiB
01-random-010.txt AC 23 ms 14304 KiB
01-random-011.txt AC 14 ms 10160 KiB
01-random-012.txt AC 21 ms 10144 KiB
01-random-013.txt AC 19 ms 12420 KiB
01-random-014.txt AC 8 ms 7460 KiB
01-random-015.txt AC 28 ms 10868 KiB
02-large-001.txt AC 28 ms 19180 KiB
02-large-002.txt AC 43 ms 19012 KiB
02-large-003.txt AC 50 ms 18988 KiB
02-large-004.txt AC 33 ms 19008 KiB
02-large-005.txt AC 37 ms 19212 KiB
02-large-006.txt AC 42 ms 18948 KiB
02-large-007.txt AC 35 ms 18980 KiB
02-large-008.txt AC 27 ms 19028 KiB
02-large-009.txt AC 34 ms 19028 KiB
02-large-010.txt AC 38 ms 19136 KiB
02-large-011.txt AC 54 ms 19120 KiB
02-large-012.txt AC 31 ms 18988 KiB
02-large-013.txt AC 38 ms 18972 KiB
02-large-014.txt AC 35 ms 19120 KiB
02-large-015.txt AC 47 ms 19092 KiB
03-small-001.txt AC 1 ms 3532 KiB
03-small-002.txt AC 1 ms 3476 KiB
03-small-003.txt AC 1 ms 3412 KiB
03-small-004.txt AC 1 ms 3532 KiB
03-small-005.txt AC 1 ms 3404 KiB
03-small-006.txt AC 1 ms 3656 KiB
03-small-007.txt AC 1 ms 3428 KiB
03-small-008.txt AC 1 ms 3536 KiB
03-small-009.txt AC 1 ms 3428 KiB
03-small-010.txt AC 1 ms 3528 KiB
03-small-011.txt AC 1 ms 3460 KiB
03-small-012.txt AC 1 ms 3408 KiB
03-small-013.txt AC 1 ms 3488 KiB
03-small-014.txt AC 1 ms 3536 KiB
03-small-015.txt AC 1 ms 3656 KiB
04-corner-001.txt AC 32 ms 15828 KiB
04-corner-002.txt AC 15 ms 10508 KiB
04-corner-003.txt AC 34 ms 15036 KiB
04-corner-004.txt AC 4 ms 4436 KiB
04-corner-005.txt AC 22 ms 10384 KiB
04-corner-006.txt AC 16 ms 8312 KiB
04-corner-007.txt AC 11 ms 6920 KiB
04-corner-008.txt AC 4 ms 4364 KiB
04-corner-009.txt AC 15 ms 9996 KiB
04-corner-010.txt AC 12 ms 7460 KiB
04-corner-011.txt AC 14 ms 9384 KiB
04-corner-012.txt AC 40 ms 15640 KiB
04-corner-013.txt AC 11 ms 7036 KiB
04-corner-014.txt AC 31 ms 11860 KiB
04-corner-015.txt AC 23 ms 11808 KiB
05-hand-001.txt AC 66 ms 19148 KiB
05-hand-002.txt AC 46 ms 19268 KiB