Cod sursa(job #2458176)

Utilizator Tudor_PascaTudor Pasca Tudor_Pasca Data 19 septembrie 2019 20:13:36
Problema Oo Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.32 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream in("oo.in");
ofstream out("oo.out");
///hit the output with that
///OwO

int main()
{
    int d[100001] = {0}, v[100001];
    int n, i;

    in >> n;
    for(i = 1; i <= n; i++)
        in >> v[i];

    if(v[1]+v[2] > v[n-1]+v[n] && v[1]+v[2] > v[1]+v[n])
    {
        d[1] = d[2] = v[1] + v[2];
        d[3] = d[n] = 0;
        for(i = 4; i < n; i++)
        {
            d[i] = max(d[i-1], d[i-3] + v[i-1] + v[i]);
            //cout << i << ' ' << d[i] << '\n';
        }
        out << d[n-1]-1 << '\n';
    }
    else
    {
        if(v[1]+v[n] > v[1]+v[2] && v[1]+v[n] > v[n-1]+v[n])
        {
            d[1] = d[n] = v[1]+v[n];
            d[2] = max(d[1], v[1]+v[2]);
            d[3] = max(d[2], v[2]+v[3]);

            for(i = 4; i < n; i++)
                d[i] = max(d[i-1], d[i-3] + v[i-1] + v[i]);

            out << d[n-1]-1 << '\n';
        }
        else
        {
            d[n-1] = d[n] = v[n-1]+v[n];
            d[1] = max(d[n], v[1] + v[n]);
            d[2] = max(d[1], v[2] + v[1]);
            d[3] = max(d[2], v[2] + v[3]);

            for(i = 4; i < n; i++)
                d[i] = max(d[i-1], d[i-3] + v[i-1] + v[i]);

            out << d[n-1]-1 << '\n';
        }
    }

    return 0;
}