Submission details
Task:Investing
Sender:freefoodfreepoints
Submission time:2025-11-08 16:45:36 +0200
Language:C++ (C++20)
Status:READY
Result:
Test results
testverdicttime
#1ACCEPTED0.00 sdetails
#2ACCEPTED0.00 sdetails
#3ACCEPTED0.00 sdetails
#4ACCEPTED0.00 sdetails
#50.00 sdetails
#60.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
#180.00 sdetails
#19ACCEPTED0.00 sdetails
#200.01 sdetails
#21ACCEPTED0.00 sdetails
#220.01 sdetails
#230.00 sdetails
#240.01 sdetails
#25ACCEPTED0.00 sdetails
#260.01 sdetails
#27ACCEPTED0.03 sdetails
#28ACCEPTED0.00 sdetails
#29ACCEPTED0.01 sdetails
#30ACCEPTED0.00 sdetails
#31ACCEPTED0.07 sdetails
#32ACCEPTED0.00 sdetails
#33ACCEPTED0.09 sdetails
#34ACCEPTED0.01 sdetails
#35ACCEPTED0.01 sdetails
#36ACCEPTED0.01 sdetails
#37ACCEPTED0.01 sdetails
#380.01 sdetails

Code

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef vector<ll> vi;
#define til(n) for(ll i = 0; i < n; i++)

constexpr ll INF = numeric_limits<ll>::max();

int main() {
    cin.tie(0)->sync_with_stdio(false);
    cout.tie(0)->sync_with_stdio(false);

    ll nodeCount, edgeCount, startNode, endNode;
    cin >> nodeCount >> edgeCount >> startNode >> endNode;
    startNode--;
    endNode--;

    // [{"Where": "Cost"}]
    vector<unordered_map<ll,ll>> edges(nodeCount, unordered_map<ll,ll>());
    til(edgeCount) {
        ll from, to, cost;
        cin >> from >> to >> cost;
        cost = -cost;
        from--;
        to--;
        if (edges[from].contains(to)) {
            edges[from][to] = edges[from][to] + cost;
        } else {
            edges[from][to] = cost;
        }
    }

    vi dist(nodeCount, INF);
    dist[startNode] = 0;
    for (int ii = 0; ii < nodeCount-1;++ii) {
        bool modified = false;
        for (int uu = 0; uu < nodeCount;++uu) {
            if (dist[uu] != INF) {
                for (auto &[vv, ww] : edges[uu]) {
                    if (dist[uu]+ww >= dist[vv]) continue;
                    dist[vv] = dist[uu]+ww;
                    modified = true;
                }
            }
        }
        if (!modified) break;
    }

    bool negCycle = false;
    for (int uu = 0; uu < nodeCount;++uu) {
        if (dist[uu] != INF) {
            for (auto &[vv, ww] : edges[uu]) {
                if (dist[vv] > dist[uu]+ww) {
                    negCycle = true;
                    // cerr << uu << " " << dist[uu]+ww << " " << dist[vv] << endl;
                }
            }
        }
    }
    
    if (dist[endNode] == INF) {
        cout << "IMPOSSIBLE" << endl;
    } else if (negCycle) {
        cout << "INFINITE MONEY GLITCH" << endl;
    } else {
        cout << -dist[endNode] << endl;
    }
}

Test details

Test 1

Verdict: ACCEPTED

input
3 3 1 2
3 2 200
1 2 -100
1 3 -100

correct output
100

user output
100

Test 2

Verdict: ACCEPTED

input
5 5 4 3
5 2 -62
5 4 -93
3 1 -223
2 1 132
...

correct output
IMPOSSIBLE

user output
IMPOSSIBLE

Test 3

Verdict: ACCEPTED

input
5 5 5 3
5 1 72
1 2 269
4 3 -285
4 1 -48
...

correct output
IMPOSSIBLE

user output
IMPOSSIBLE

Test 4

Verdict: ACCEPTED

input
5 5 3 4
3 4 -176
4 1 -289
5 1 -228
2 5 125
...

correct output
-176

user output
-176

Test 5

Verdict:

input
5 10 5 4
4 2 -181
1 4 157
1 3 111
1 5 7
...

correct output
-98

user output
-99

Feedback: Incorrect character on line 1 col 3: expected "-98", got "-99"

Test 6

Verdict:

input
5 10 2 5
4 5 -245
4 5 138
4 5 215
3 2 -165
...

correct output
357

user output
77

Feedback: Incorrect character on line 1 col 1: expected "357", got "77"

Test 7

Verdict: ACCEPTED

input
5 10 1 5
3 4 136
3 1 -130
2 4 -280
5 4 -249
...

correct output
IMPOSSIBLE

user output
IMPOSSIBLE

Test 8

Verdict: ACCEPTED

input
5 10 4 1
3 1 -2
5 1 215
4 2 166
4 1 -279
...

correct output
INFINITE MONEY GLITCH

user output
INFINITE MONEY GLITCH

Test 9

Verdict: ACCEPTED

input
5 10 5 1
1 5 -224
1 4 -220
4 2 -1
4 5 -214
...

correct output
-79

user output
-79

Test 10

Verdict: ACCEPTED

input
5 10 2 1
1 4 -299
1 2 -39
4 5 81
4 1 -56
...

correct output
INFINITE MONEY GLITCH

user output
INFINITE MONEY GLITCH

Test 11

Verdict: ACCEPTED

input
5 10 4 4
5 3 -174
5 2 -46
5 1 -210
2 1 -80
...

correct output
0

user output
0

Test 12

Verdict: ACCEPTED

input
5 10 4 2
4 5 -218
4 2 -30
4 1 -218
2 4 -64
...

correct output
INFINITE MONEY GLITCH

user output
INFINITE MONEY GLITCH

Test 13

Verdict: ACCEPTED

input
10 30 9 7
3 8 39
4 8 -39
4 6 -38
10 7 -178
...

correct output
-93

user output
-93

Test 14

Verdict: ACCEPTED

input
10 30 3 10
3 6 -1
3 8 -300
3 9 -143
7 2 -5
...

correct output
INFINITE MONEY GLITCH

user output
INFINITE MONEY GLITCH

Test 15

Verdict: ACCEPTED

input
10 30 7 8
8 4 -53
5 3 -87
5 1 -266
5 2 -277
...

correct output
-61

user output
-61

Test 16

Verdict: ACCEPTED

input
10 30 8 9
2 9 -37
5 3 -259
5 2 -222
7 1 -184
...

correct output
INFINITE MONEY GLITCH

user output
INFINITE MONEY GLITCH

Test 17

Verdict: ACCEPTED

input
4 5 3 1
4 2 -107
4 1 -300
2 4 108
3 1 300
...

correct output
INFINITE MONEY GLITCH

user output
INFINITE MONEY GLITCH

Test 18

Verdict:

input
4 4 3 2
1 4 -177
4 1 178
3 2 300
3 4 -300

correct output
300

user output
INFINITE MONEY GLITCH

Feedback: Output is longer than expected

Test 19

Verdict: ACCEPTED

input
100 1000 95 59
17 33 -154
17 32 68
17 65 71
17 9 -284
...

correct output
-13

user output
-13

Test 20

Verdict:

input
100 10000 95 70
49 84 -186
49 65 120
49 76 -38
49 66 27
...

correct output
11333

user output
13470

Feedback: Incorrect character on line 1 col 2: expected "11333", got "13470"

Test 21

Verdict: ACCEPTED

input
1000 1000 942 532
211 103 0
65 459 266
132 809 -167
538 228 -206
...

correct output
IMPOSSIBLE

user output
IMPOSSIBLE

Test 22

Verdict:

input
1000 10000 356 204
831 540 180
77 237 -170
77 284 -62
77 431 -233
...

correct output
2015

user output
2037

Feedback: Incorrect character on line 1 col 3: expected "2015", got "2037"

Test 23

Verdict:

input
100 1000 43 74
7 83 101
7 71 -207
7 14 76
83 71 235
...

correct output
INFINITE MONEY GLITCH

user output
1156

Feedback: Output is shorter than expected

Test 24

Verdict:

input
100 10000 65 38
49 17 114
49 15 -56
49 50 -139
49 77 205
...

correct output
4259

user output
4453

Feedback: Incorrect character on line 1 col 2: expected "4259", got "4453"

Test 25

Verdict: ACCEPTED

input
1000 1000 130 119
306 321 288
250 624 58
724 994 193
924 126 271
...

correct output
IMPOSSIBLE

user output
IMPOSSIBLE

Test 26

Verdict:

input
1000 10000 520 842
992 359 30
992 751 -79
992 473 86
992 132 184
...

correct output
5168

user output
4997

Feedback: Incorrect character on line 1 col 1: expected "5168", got "4997"

Test 27

Verdict: ACCEPTED

input
1000 10000 954 5
95 364 229
95 386 -23
95 516 40
95 385 188
...

correct output
INFINITE MONEY GLITCH

user output
INFINITE MONEY GLITCH

Test 28

Verdict: ACCEPTED

input
100 1000 10 44
87 45 -54
87 5 -174
87 43 -45
87 54 -72
...

correct output
-115

user output
-115

Test 29

Verdict: ACCEPTED

input
1000 10000 216 836
503 408 -244
438 4 -245
438 351 -210
438 797 -80
...

correct output
-251

user output
-251

Test 30

Verdict: ACCEPTED

input
100 1000 35 52
81 36 -69
81 19 -271
81 87 -78
86 9 -119
...

correct output
INFINITE MONEY GLITCH

user output
INFINITE MONEY GLITCH

Test 31

Verdict: ACCEPTED

input
1000 10000 237 361
274 53 -54
274 678 -68
723 853 -191
723 858 -86
...

correct output
INFINITE MONEY GLITCH

user output
INFINITE MONEY GLITCH

Test 32

Verdict: ACCEPTED

input
100 1000 54 13
35 66 -59
35 92 -229
35 28 -211
35 58 -232
...

correct output
INFINITE MONEY GLITCH

user output
INFINITE MONEY GLITCH

Test 33

Verdict: ACCEPTED

input
1000 10000 230 928
94 30 -61
94 594 -43
94 338 -123
827 422 -146
...

correct output
INFINITE MONEY GLITCH

user output
INFINITE MONEY GLITCH

Test 34

Verdict: ACCEPTED

input
1000 1001 917 438
494 421 -150
494 917 -300
421 494 151
998 438 300
...

correct output
INFINITE MONEY GLITCH

user output
INFINITE MONEY GLITCH

Test 35

Verdict: ACCEPTED

input
1000 1001 183 711
197 383 -109
197 711 -300
383 197 110
570 711 300
...

correct output
INFINITE MONEY GLITCH

user output
INFINITE MONEY GLITCH

Test 36

Verdict: ACCEPTED

input
1000 1001 43 622
622 786 -300
983 786 -73
983 43 -300
786 983 74
...

correct output
INFINITE MONEY GLITCH

user output
INFINITE MONEY GLITCH

Test 37

Verdict: ACCEPTED

input
1000 1001 116 939
320 700 -51
320 734 -300
700 320 52
425 939 300
...

correct output
INFINITE MONEY GLITCH

user output
INFINITE MONEY GLITCH

Test 38

Verdict:

input
1000 1000 7 836
973 309 79
309 973 -78
56 836 300
489 56 300
...

correct output
299100

user output
INFINITE MONEY GLITCH

Feedback: Output is longer than expected