Submission details
Task:Card game
Sender:Isak
Submission time:2025-09-17 14:48:55 +0300
Language:C++ (C++20)
Status:READY
Result:
Test results
testverdicttime
#10.00 sdetails
#2ACCEPTED0.00 sdetails
#3ACCEPTED0.00 sdetails
#4ACCEPTED0.00 sdetails
#5ACCEPTED0.00 sdetails
#6ACCEPTED0.00 sdetails
#7ACCEPTED0.01 sdetails
#8ACCEPTED0.11 sdetails
#9ACCEPTED0.11 sdetails
#10ACCEPTED0.11 sdetails
#110.00 sdetails
#120.00 sdetails
#130.00 sdetails
#14ACCEPTED0.12 sdetails
#15ACCEPTED0.11 sdetails

Compiler report

input/code.cpp: In function 'int main()':
input/code.cpp:29:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   29 |         scanf("%ld", values + i);
      |         ~~~~~^~~~~~~~~~~~~~~~~~~

Code

#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>

uint64_t max2(uint64_t a, uint64_t b){
        return b > a ? b : a;
}

uint64_t max3(uint64_t a, uint64_t b, uint64_t c){
    if (a > b)
        return c > a ? c : a;
    else
        return c > b ? c : b;
}

int main() {
    uint64_t nb = 0;
    if (scanf("%ld", &nb) == 0)
        return EXIT_FAILURE;

    // main algo

    uint64_t *values = (uint64_t*) malloc(sizeof(uint64_t)*nb);
    uint64_t *max = (uint64_t*) calloc(nb, sizeof(uint64_t));
    for(uint64_t i =0; i < nb; i++){
        scanf("%ld", values + i);
    }

    if (nb <= 5){
        uint64_t acc = 0;
        for (uint64_t i = 1; i < (nb == 5 ? 4 : nb) - 1; i++){
            acc = (acc < values[i]) ? values[i] : acc;
        }
        if (nb == 5)
            acc = max2(acc, values[4] + values[1]);
        printf("%ld", acc);
    }

    max[0] = 0;
    max[1] = values[1];
    max[2] = values[2];
    max[3] = values[3];
    max[4] = values[4] + values[1];
    max[5] = values[5] + max2(values[1], values[2]);
    for (uint64_t i = 6; i < nb - 1; i++){
        max[i] = values[i] + max3(max[i-3], max[i-4], max[i-5]);
    }

    printf("%ld\n", max3(max[nb-2], max[nb-3], max[nb-4]));

    return EXIT_SUCCESS;
}

Test details

Test 1

Verdict:

input
5
9 4 1 6 6

correct output
6

user output
106

Test 2

Verdict: ACCEPTED

input
6
5 6 2 4 10 1

correct output
16

user output
16

Test 3

Verdict: ACCEPTED

input
10
8 9 10 2 7 1 10 10 1 4

correct output
26

user output
26

Test 4

Verdict: ACCEPTED

input
100
1 8 8 5 7 10 9 4 8 10 6 3 8 7 ...

correct output
243

user output
243

Test 5

Verdict: ACCEPTED

input
1000
10 7 5 6 5 2 5 3 2 2 1 6 8 7 8...

correct output
2230

user output
2230

Test 6

Verdict: ACCEPTED

input
10000
9 1 8 2 6 5 1 3 3 10 6 3 9 3 1...

correct output
22363

user output
22363

Test 7

Verdict: ACCEPTED

input
100000
5 5 4 6 8 7 9 6 3 2 5 8 7 3 5 ...

correct output
226636

user output
226636

Test 8

Verdict: ACCEPTED

input
1000000
5 8 5 7 9 1 9 10 3 6 1 8 3 9 7...

correct output
2259395

user output
2259395

Test 9

Verdict: ACCEPTED

input
1000000
4 5 3 5 4 3 6 7 10 6 3 9 7 9 1...

correct output
2260761

user output
2260761

Test 10

Verdict: ACCEPTED

input
1000000
10 3 6 7 7 10 4 4 5 2 9 4 6 10...

correct output
2260407

user output
2260407

Test 11

Verdict:

input
3
87 3 123

correct output
3

user output
33

Test 12

Verdict:

input
2
175 95

correct output
0

user output
_33

Test 13

Verdict:

input
1
42

correct output
0

user output
33

Test 14

Verdict: ACCEPTED

input
1000000
1000 1000 1000 1000 1000 1000 ...

correct output
333333000

user output
333333000

Test 15

Verdict: ACCEPTED

input
1000000
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...

correct output
333333

user output
333333