CSES - Aalto Competitive Programming 2024 - wk11 - Wed - Results
Submission details
Task:Grid paths
Sender:aalto2024l_005
Submission time:2024-11-20 16:36:54 +0200
Language:C++ (C++17)
Status:READY
Result:
Test results
testverdicttime
#1ACCEPTED0.00 sdetails
#2ACCEPTED0.01 sdetails
#3ACCEPTED0.00 sdetails
#4ACCEPTED0.00 sdetails
#5ACCEPTED0.00 sdetails
#6ACCEPTED0.00 sdetails
#7ACCEPTED0.00 sdetails
#8ACCEPTED0.00 sdetails
#9ACCEPTED0.00 sdetails
#10ACCEPTED0.00 sdetails
#11ACCEPTED0.00 sdetails
#12ACCEPTED0.00 sdetails
#13ACCEPTED0.00 sdetails
#14ACCEPTED0.00 sdetails
#15ACCEPTED0.00 sdetails
#16ACCEPTED0.00 sdetails
#17ACCEPTED0.00 sdetails
#18ACCEPTED0.00 sdetails
#19ACCEPTED0.00 sdetails
#20ACCEPTED0.00 sdetails
#21ACCEPTED0.00 sdetails
#22ACCEPTED0.00 sdetails
#23ACCEPTED0.00 sdetails
#24ACCEPTED0.00 sdetails
#25ACCEPTED0.01 sdetails
#26ACCEPTED0.00 sdetails
#27ACCEPTED0.00 sdetails
#28ACCEPTED0.00 sdetails
#29ACCEPTED0.00 sdetails
#30ACCEPTED0.00 sdetails
#31ACCEPTED0.00 sdetails
#32ACCEPTED0.00 sdetails
#33ACCEPTED0.00 sdetails
#34ACCEPTED0.00 sdetails
#35ACCEPTED0.00 sdetails
#36ACCEPTED0.00 sdetails
#37ACCEPTED0.00 sdetails
#38ACCEPTED0.00 sdetails
#39ACCEPTED0.00 sdetails
#40ACCEPTED0.00 sdetails
#41ACCEPTED0.00 sdetails
#42ACCEPTED0.00 sdetails
#43ACCEPTED0.00 sdetails
#44ACCEPTED0.00 sdetails
#45ACCEPTED0.00 sdetails
#46ACCEPTED0.00 sdetails
#47ACCEPTED0.00 sdetails
#48ACCEPTED0.00 sdetails
#49ACCEPTED0.01 sdetails
#50ACCEPTED0.00 sdetails
#51ACCEPTED0.00 sdetails
#52ACCEPTED0.00 sdetails
#530.00 sdetails
#540.00 sdetails
#550.00 sdetails
#560.00 sdetails
#570.00 sdetails
#580.00 sdetails
#590.00 sdetails
#600.00 sdetails
#610.00 sdetails
#620.00 sdetails
#630.00 sdetails
#640.00 sdetails
#650.00 sdetails
#660.00 sdetails
#670.00 sdetails
#680.00 sdetails
#690.00 sdetails
#700.00 sdetails
#710.00 sdetails
#720.01 sdetails
#730.00 sdetails
#74ACCEPTED0.00 sdetails
#750.00 sdetails
#760.00 sdetails
#770.00 sdetails
#780.00 sdetails
#790.00 sdetails
#800.00 sdetails
#810.00 sdetails
#820.00 sdetails
#830.00 sdetails
#840.00 sdetails
#850.00 sdetails
#860.00 sdetails
#870.00 sdetails
#880.00 sdetails
#890.00 sdetails
#900.00 sdetails
#910.00 sdetails
#920.00 sdetails
#930.00 sdetails
#940.00 sdetails
#950.00 sdetails
#960.00 sdetails
#970.00 sdetails
#980.00 sdetails
#990.00 sdetails
#1000.00 sdetails
#1010.00 sdetails
#1020.00 sdetails

Code

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

const long long MOD = 998244353;

long long fact[30001], inv_fact[30001];

long long mod_pow(long long x, long long y, long long mod) {
    long long result = 1;
    while (y > 0) {
        if (y % 2 == 1) {
            result = (result * x) % mod;
        }
        x = (x * x) % mod;
        y /= 2;
    }
    return result;
}

void precompute() {
    fact[0] = 1;
    for (int i = 1; i <= 30000; i++) {
        fact[i] = fact[i - 1] * i % MOD;
    }
    inv_fact[30000] = mod_pow(fact[30000], MOD - 2, MOD);
    for (int i = 30000 - 1; i >= 0; i--) {
        inv_fact[i] = inv_fact[i + 1] * (i + 1) % MOD;
    }
}

int main() {

    int x, y, z;
    cin >> x >> y >> z;

    long long total_moves = x + y + z;
    precompute();

    // RES = total fact  / fact_x * fact_y * fact_z
    long long result = fact[total_moves] * inv_fact[x] % MOD * inv_fact[y] % MOD * inv_fact[z] % MOD;
    cout << result << endl;

    return 0;
}

Test details

Test 1

Verdict: ACCEPTED

input
1 1 1

correct output
6

user output
6

Test 2

Verdict: ACCEPTED

input
1 2 2

correct output
30

user output
30

Test 3

Verdict: ACCEPTED

input
2 2 2

correct output
90

user output
90

Test 4

Verdict: ACCEPTED

input
1 3 2

correct output
60

user output
60

Test 5

Verdict: ACCEPTED

input
1 0 0

correct output
1

user output
1

Test 6

Verdict: ACCEPTED

input
2 0 3

correct output
10

user output
10

Test 7

Verdict: ACCEPTED

input
4 4 2

correct output
3150

user output
3150

Test 8

Verdict: ACCEPTED

input
1 0 4

correct output
5

user output
5

Test 9

Verdict: ACCEPTED

input
5 5 1

correct output
2772

user output
2772

Test 10

Verdict: ACCEPTED

input
0 1 4

correct output
5

user output
5

Test 11

Verdict: ACCEPTED

input
5 0 5

correct output
252

user output
252

Test 12

Verdict: ACCEPTED

input
0 2 3

correct output
10

user output
10

Test 13

Verdict: ACCEPTED

input
6 6 7

correct output
46558512

user output
46558512

Test 14

Verdict: ACCEPTED

input
4 10 7

correct output
116396280

user output
116396280

Test 15

Verdict: ACCEPTED

input
4 2 0

correct output
15

user output
15

Test 16

Verdict: ACCEPTED

input
6 0 7

correct output
1716

user output
1716

Test 17

Verdict: ACCEPTED

input
10 9 6

correct output
388234152

user output
388234152

Test 18

Verdict: ACCEPTED

input
2 0 9

correct output
55

user output
55

Test 19

Verdict: ACCEPTED

input
9 10 3

correct output
142262120

user output
142262120

Test 20

Verdict: ACCEPTED

input
0 2 8

correct output
45

user output
45

Test 21

Verdict: ACCEPTED

input
9 0 10

correct output
92378

user output
92378

Test 22

Verdict: ACCEPTED

input
0 4 5

correct output
126

user output
126

Test 23

Verdict: ACCEPTED

input
77 30 2

correct output
207933206

user output
207933206

Test 24

Verdict: ACCEPTED

input
18 6 1

correct output
3364900

user output
3364900

Test 25

Verdict: ACCEPTED

input
15 45 74

correct output
53128847

user output
53128847

Test 26

Verdict: ACCEPTED

input
78 61 23

correct output
501316289

user output
501316289

Test 27

Verdict: ACCEPTED

input
51 93 78

correct output
126313894

user output
126313894

Test 28

Verdict: ACCEPTED

input
85 82 18

correct output
531313357

user output
531313357

Test 29

Verdict: ACCEPTED

input
22 32 52

correct output
837184390

user output
837184390

Test 30

Verdict: ACCEPTED

input
29 18 53

correct output
62578813

user output
62578813

Test 31

Verdict: ACCEPTED

input
65 7 51

correct output
422701975

user output
422701975

Test 32

Verdict: ACCEPTED

input
9 43 76

correct output
83791842

user output
83791842

Test 33

Verdict: ACCEPTED

input
588 888 898

correct output
503848334

user output
503848334

Test 34

Verdict: ACCEPTED

input
48 800 289

correct output
155056270

user output
155056270

Test 35

Verdict: ACCEPTED

input
208 702 482

correct output
539442446

user output
539442446

Test 36

Verdict: ACCEPTED

input
517 669 947

correct output
637353246

user output
637353246

Test 37

Verdict: ACCEPTED

input
960 294 700

correct output
342937256

user output
342937256

Test 38

Verdict: ACCEPTED

input
870 696 582

correct output
616260310

user output
616260310

Test 39

Verdict: ACCEPTED

input
308 713 519

correct output
33883838

user output
33883838

Test 40

Verdict: ACCEPTED

input
426 481 815

correct output
556824158

user output
556824158

Test 41

Verdict: ACCEPTED

input
729 170 561

correct output
509492253

user output
509492253

Test 42

Verdict: ACCEPTED

input
864 801 285

correct output
364315381

user output
364315381

Test 43

Verdict: ACCEPTED

input
6442 9170 3807

correct output
786529613

user output
786529613

Test 44

Verdict: ACCEPTED

input
2860 289 9582

correct output
685493194

user output
685493194

Test 45

Verdict: ACCEPTED

input
8589 596 3727

correct output
760680556

user output
760680556

Test 46

Verdict: ACCEPTED

input
2485 6897 4500

correct output
940772711

user output
940772711

Test 47

Verdict: ACCEPTED

input
385 1957 7801

correct output
857634324

user output
857634324

Test 48

Verdict: ACCEPTED

input
4581 4498 3083

correct output
434838551

user output
434838551

Test 49

Verdict: ACCEPTED

input
7285 876 6016

correct output
542143311

user output
542143311

Test 50

Verdict: ACCEPTED

input
9445 1392 4641

correct output
71990254

user output
71990254

Test 51

Verdict: ACCEPTED

input
3848 8971 8597

correct output
894107749

user output
894107749

Test 52

Verdict: ACCEPTED

input
5469 56 7979

correct output
530063189

user output
530063189

Test 53

Verdict:

input
40769 64401 5536

correct output
835170422

user output
(empty)

Test 54

Verdict:

input
25092 68058 4609

correct output
774058420

user output
(empty)

Test 55

Verdict:

input
37454 79655 95072

correct output
146618336

user output
(empty)

Test 56

Verdict:

input
11505 49686 60907

correct output
460903426

user output
(empty)

Test 57

Verdict:

input
83485 43254 10479

correct output
365702907

user output
(empty)

Test 58

Verdict:

input
98902 30454 54955

correct output
137657373

user output
(empty)

Test 59

Verdict:

input
78384 25805 63484

correct output
364221017

user output
(empty)

Test 60

Verdict:

input
11349 85177 97449

correct output
878820672

user output
(empty)

Test 61

Verdict:

input
1749 42649 89158

correct output
568752540

user output
(empty)

Test 62

Verdict:

input
30096 47374 24706

correct output
829354422

user output
(empty)

Test 63

Verdict:

input
54882 59285 71520

correct output
623675666

user output
(empty)

Test 64

Verdict:

input
41702 99720 72033

correct output
277561895

user output
(empty)

Test 65

Verdict:

input
43600 18508 2592

correct output
412985183

user output
(empty)

Test 66

Verdict:

input
55080 7072 70815

correct output
652841102

user output
(empty)

Test 67

Verdict:

input
96704 90063 54724

correct output
774619311

user output
(empty)

Test 68

Verdict:

input
22199 5518 87074

correct output
696743124

user output
(empty)

Test 69

Verdict:

input
89287 94749 33198

correct output
584345165

user output
(empty)

Test 70

Verdict:

input
7630 22734 77993

correct output
570604316

user output
(empty)

Test 71

Verdict:

input
87344 1111 96855

correct output
17915653

user output
(empty)

Test 72

Verdict:

input
1037 36446 50188

correct output
856454369

user output
(empty)

Test 73

Verdict:

input
77133 29876 2075

correct output
954243600

user output
(empty)

Test 74

Verdict: ACCEPTED

input
18027 6830 1947

correct output
317560580

user output
317560580

Test 75

Verdict:

input
15416 44622 74006

correct output
58145749

user output
(empty)

Test 76

Verdict:

input
77771 60735 23754

correct output
506483665

user output
(empty)

Test 77

Verdict:

input
51395 92190 77317

correct output
162293324

user output
(empty)

Test 78

Verdict:

input
84883 81359 17889

correct output
756622374

user output
(empty)

Test 79

Verdict:

input
22329 32666 52317

correct output
340258046

user output
(empty)

Test 80

Verdict:

input
29466 18178 53059

correct output
198540032

user output
(empty)

Test 81

Verdict:

input
65038 7601 50546

correct output
977669993

user output
(empty)

Test 82

Verdict:

input
9753 43047 76126

correct output
980244494

user output
(empty)

Test 83

Verdict:

input
58814 88742 89772

correct output
967086349

user output
(empty)

Test 84

Verdict:

input
4872 79928 28911

correct output
451336611

user output
(empty)

Test 85

Verdict:

input
20846 70197 48168

correct output
813382933

user output
(empty)

Test 86

Verdict:

input
51730 66910 94697

correct output
68361808

user output
(empty)

Test 87

Verdict:

input
96003 29443 69952

correct output
85060141

user output
(empty)

Test 88

Verdict:

input
87013 69607 58228

correct output
663549762

user output
(empty)

Test 89

Verdict:

input
30793 71312 51939

correct output
819595366

user output
(empty)

Test 90

Verdict:

input
42572 48080 81459

correct output
545882121

user output
(empty)

Test 91

Verdict:

input
72902 17082 56124

correct output
753823906

user output
(empty)

Test 92

Verdict:

input
86377 80054 28491

correct output
760419142

user output
(empty)

Test 93

Verdict:

input
64415 91699 38075

correct output
939685526

user output
(empty)

Test 94

Verdict:

input
28605 2899 95812

correct output
886982112

user output
(empty)

Test 95

Verdict:

input
85890 5965 37271

correct output
830797537

user output
(empty)

Test 96

Verdict:

input
24851 68969 44998

correct output
785235517

user output
(empty)

Test 97

Verdict:

input
3856 19576 78011

correct output
586779888

user output
(empty)

Test 98

Verdict:

input
45806 44980 30835

correct output
61814992

user output
(empty)

Test 99

Verdict:

input
72851 8764 60162

correct output
423877809

user output
(empty)

Test 100

Verdict:

input
94451 13922 46410

correct output
534902695

user output
(empty)

Test 101

Verdict:

input
38477 89702 85972

correct output
149142997

user output
(empty)

Test 102

Verdict:

input
54689 566 79791

correct output
121698401

user output
(empty)