CSES - Aalto Competitive Programming 2024 - wk3 - Mon - Results
Submission details
Task:Wheel of fortune
Sender:aalto2024b_005
Submission time:2024-09-16 17:47:59 +0300
Language:C++11
Status:COMPILE ERROR

Compiler report

input/code.cpp: In function 'int main()':
input/code.cpp:73:23: error: no matching function for call to 'max(LL&, int)'
   73 |     printf("%lld", max(ans, 0));
      |                    ~~~^~~~~~~~
In file included from /usr/include/c++/11/algorithm:62,
                 from input/code.cpp:3:
/usr/include/c++/11/bits/stl_algo.h:3467:5: note: candidate: 'template<class _Tp, class _Compare> _Tp std::max(std::initializer_list<_Tp>, _Compare)'
 3467 |     max(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
/usr/include/c++/11/bits/stl_algo.h:3467:5: note:   template argument deduction/substitution failed:
input/code.cpp:73:23: note:   mismatched types 'std::initializer_list<_Tp>' and 'long long int'
   73 |     printf("%lld", max(ans, 0));
      |                    ~~~^~~~~~~~
In file included from /usr/include/c++/11/algorithm:62,
                 from input/code.cpp:3:
/usr/include/c++/11/bits/stl_algo.h:3461:5: note: candidate: 'template<class _Tp> _Tp std::max(std::initi...

Code

#include<iostream>
#include<cstdio>
#include<algorithm>
typedef long long LL;
using std::max;
const int N=1e5+3;

const LL INF = 0x3fffffffffffffff;

LL a[N], f[N][10];

void Test()
{
    freopen("temp\\in.txt", "r", stdin);
}
int main()
{
    // Test();
    int n;
    scanf("%d", &n);
    for(int i=1; i<=n; i++)
        scanf("%lld", &a[i]);

    f[1][1] = a[1];
    f[1][5] = -a[1];

    f[2][1] = -INF;
    f[2][2] = f[1][1] - a[2];
    f[2][3] = f[1][1];
    f[2][3+1] = f[1][5] + a[2];
    f[2][3+2] = -INF;
    f[2][3+3] = f[1][5];
    f[2][6+1] = f[1][9] + a[2];
    f[2][6+2] = f[1][9] - a[2];
    f[2][6+3] = -INF;

    for(int i=3; i<n; i++)
    {
        for(int j=0; j<=6; j+=3)
        {
            // choose
            f[i][j+1] = max(f[i-1][j+2], f[i-1][j+3]);
            f[i][j+1] += a[i];
            // unchoose
            f[i][j+2] = max(f[i-1][j+1], f[i-1][j+3]);
            f[i][j+2] -= a[i];
            // ignore
            f[i][j+3] = max(f[i-1][j+1], f[i-1][j+2]);
        }
    }

    f[n][1] = -INF;
    f[n][2] = f[n-1][3] - a[n];
    f[n][3] = f[n-1][2];
    f[n][3+1] = f[n-1][3+3] + a[n];
    f[n][3+2] = -INF;
    f[n][3+3] = f[n-1][3+1];
    f[n][6+1] = f[n-1][6+2] + a[n];
    f[n][6+2] = f[n-1][6+1] - a[n];
    f[n][6+3] = -INF;

    LL ans = -INF;
    for(int i=1; i<=9; i++)
        ans = max(ans, f[n][i]);

// for(int i=1; i<=n; i++)
// {
//     for(int j=1; j<=9; j++)
//         printf("%d ", f[i][j]);
//     putchar('\n');
// }

    printf("%lld", max(ans, 0));
    return 0;
}