CSES - Aalto Competitive Programming 2024 - wk11 - Wed - Results
Submission details
Task:Grid paths
Sender:aalto2024l_006
Submission time:2024-11-20 17:21:17 +0200
Language:C++ (C++17)
Status:READY
Result:
Test results
testverdicttime
#1ACCEPTED0.00 sdetails
#2--details
#3--details
#4ACCEPTED0.94 sdetails
#5ACCEPTED0.00 sdetails
#6ACCEPTED0.94 sdetails
#7--details
#8ACCEPTED0.41 sdetails
#9--details
#10ACCEPTED0.41 sdetails
#11--details
#12ACCEPTED0.94 sdetails
#13--details
#14--details
#15--details
#16--details
#17--details
#18--details
#19--details
#20--details
#21--details
#22--details
#23--details
#24--details
#25--details
#26--details
#27--details
#28--details
#29--details
#30--details
#31--details
#32--details
#33--details
#34--details
#35--details
#36--details
#37--details
#38--details
#39--details
#40--details
#41--details
#42--details
#43--details
#44--details
#45--details
#46--details
#47--details
#48--details
#49--details
#50--details
#51--details
#52--details
#53--details
#54--details
#55--details
#56--details
#57--details
#58--details
#59ACCEPTED0.66 sdetails
#60--details
#61--details
#62--details
#63--details
#64--details
#65--details
#66--details
#67--details
#68--details
#69--details
#70--details
#71--details
#72--details
#73--details
#74--details
#75--details
#76--details
#77--details
#78--details
#79--details
#80--details
#81--details
#82--details
#83--details
#84ACCEPTED1.00 sdetails
#85--details
#86--details
#87--details
#88--details
#89--details
#90--details
#91--details
#92--details
#93--details
#94--details
#95--details
#96--details
#97--details
#98--details
#99--details
#100--details
#101--details
#102ACCEPTED0.77 sdetails

Compiler report

input/code.cpp: In function 'll modInverse(ll)':
input/code.cpp:22:1: warning: control reaches end of non-void function [-Wreturn-type]
   22 | }
      | ^

Code

#include<algorithm>
#include <algorithm>
#include <iostream>
#include <queue>
#include <numeric>

#define M 998244353
typedef long long int ll;
using namespace std;

 
ll modInverse(ll A) {
  
      if(gcd(A, M) > 1){
          
          // modulo inverse does not exist
          return -1;
    }
    for (ll X = 1; X < M; X++)
        if (((A % M) * (X % M)) % M == 1)
            return X;
}


ll factorial(ll n)
{
    ll f = 1;
    for (int i=1; i<=n; ++i)
        f *= i;
    return f;
}

ll modFact(ll n, ll p)
{
    if (n >= p)
        return 0;
 
    ll result = 1;
    for (ll i = 1; i <= n; i++)
        result = (result * i) % p;
 
    return result;
}

  


int main()
{
    ll x, y, z;
    cin >> x >> y >> z;

    ll up = modFact(x + y + z, M );
    
    ll xfact = modFact(x, M);
    ll yfact = modFact(y, M);
    ll zfact = modFact(z, M);

    ll xinv = modInverse(xfact);
    ll yinv = modInverse(yfact);
    ll zinv = modInverse(zfact);

    ll nlatticepaths = (up%M * xinv%M * yinv%M * zinv%M) % M;

    cout << nlatticepaths  << endl;
}

Test details

Test 1

Verdict: ACCEPTED

input
1 1 1

correct output
6

user output
6

Test 2

Verdict:

input
1 2 2

correct output
30

user output
(empty)

Test 3

Verdict:

input
2 2 2

correct output
90

user output
(empty)

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:

input
4 4 2

correct output
3150

user output
(empty)

Test 8

Verdict: ACCEPTED

input
1 0 4

correct output
5

user output
5

Test 9

Verdict:

input
5 5 1

correct output
2772

user output
(empty)

Test 10

Verdict: ACCEPTED

input
0 1 4

correct output
5

user output
5

Test 11

Verdict:

input
5 0 5

correct output
252

user output
(empty)

Test 12

Verdict: ACCEPTED

input
0 2 3

correct output
10

user output
10

Test 13

Verdict:

input
6 6 7

correct output
46558512

user output
(empty)

Test 14

Verdict:

input
4 10 7

correct output
116396280

user output
(empty)

Test 15

Verdict:

input
4 2 0

correct output
15

user output
(empty)

Test 16

Verdict:

input
6 0 7

correct output
1716

user output
(empty)

Test 17

Verdict:

input
10 9 6

correct output
388234152

user output
(empty)

Test 18

Verdict:

input
2 0 9

correct output
55

user output
(empty)

Test 19

Verdict:

input
9 10 3

correct output
142262120

user output
(empty)

Test 20

Verdict:

input
0 2 8

correct output
45

user output
(empty)

Test 21

Verdict:

input
9 0 10

correct output
92378

user output
(empty)

Test 22

Verdict:

input
0 4 5

correct output
126

user output
(empty)

Test 23

Verdict:

input
77 30 2

correct output
207933206

user output
(empty)

Test 24

Verdict:

input
18 6 1

correct output
3364900

user output
(empty)

Test 25

Verdict:

input
15 45 74

correct output
53128847

user output
(empty)

Test 26

Verdict:

input
78 61 23

correct output
501316289

user output
(empty)

Test 27

Verdict:

input
51 93 78

correct output
126313894

user output
(empty)

Test 28

Verdict:

input
85 82 18

correct output
531313357

user output
(empty)

Test 29

Verdict:

input
22 32 52

correct output
837184390

user output
(empty)

Test 30

Verdict:

input
29 18 53

correct output
62578813

user output
(empty)

Test 31

Verdict:

input
65 7 51

correct output
422701975

user output
(empty)

Test 32

Verdict:

input
9 43 76

correct output
83791842

user output
(empty)

Test 33

Verdict:

input
588 888 898

correct output
503848334

user output
(empty)

Test 34

Verdict:

input
48 800 289

correct output
155056270

user output
(empty)

Test 35

Verdict:

input
208 702 482

correct output
539442446

user output
(empty)

Test 36

Verdict:

input
517 669 947

correct output
637353246

user output
(empty)

Test 37

Verdict:

input
960 294 700

correct output
342937256

user output
(empty)

Test 38

Verdict:

input
870 696 582

correct output
616260310

user output
(empty)

Test 39

Verdict:

input
308 713 519

correct output
33883838

user output
(empty)

Test 40

Verdict:

input
426 481 815

correct output
556824158

user output
(empty)

Test 41

Verdict:

input
729 170 561

correct output
509492253

user output
(empty)

Test 42

Verdict:

input
864 801 285

correct output
364315381

user output
(empty)

Test 43

Verdict:

input
6442 9170 3807

correct output
786529613

user output
(empty)

Test 44

Verdict:

input
2860 289 9582

correct output
685493194

user output
(empty)

Test 45

Verdict:

input
8589 596 3727

correct output
760680556

user output
(empty)

Test 46

Verdict:

input
2485 6897 4500

correct output
940772711

user output
(empty)

Test 47

Verdict:

input
385 1957 7801

correct output
857634324

user output
(empty)

Test 48

Verdict:

input
4581 4498 3083

correct output
434838551

user output
(empty)

Test 49

Verdict:

input
7285 876 6016

correct output
542143311

user output
(empty)

Test 50

Verdict:

input
9445 1392 4641

correct output
71990254

user output
(empty)

Test 51

Verdict:

input
3848 8971 8597

correct output
894107749

user output
(empty)

Test 52

Verdict:

input
5469 56 7979

correct output
530063189

user output
(empty)

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: ACCEPTED

input
78384 25805 63484

correct output
364221017

user output
364221017

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:

input
18027 6830 1947

correct output
317560580

user output
(empty)

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: ACCEPTED

input
4872 79928 28911

correct output
451336611

user output
451336611

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: ACCEPTED

input
54689 566 79791

correct output
121698401

user output
121698401