Cod sursa(job #3276125)

Utilizator Aleciu12Ciuvica Alexandru Aleciu12 Data 12 februarie 2025 18:51:26
Problema Buline Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.5 kb
#include <bits/stdc++.h>
using namespace std;

ifstream fin("suma2.in");
ofstream fout("suma2.out");

int n;
long long x, y; // vor tine minte suma maxima calculata
// x reprezinta suma maxima in care ultimul element este inclus (valoarea cand se adauga un element)
// y reprezinta suma maxima in care ultimul element NU este inclus (valoarea cand ssare un element)



int main()
{
    fin >> n;
    for(int i = 1; i <= n; i++) { // parcurg toate elementele sirului
        long long val;
        fin >> val;
        
        // verific daca indexul i este par sau impar, pentru a alterna in doua cazuri:
        // 1. daca i este par (adica elementul curent nu este alaturat celui precedent in solutia optima)
        //    astfel x = max(y, max(x + val, val)) se obtine din: actualizeaza suma maxima x cand includem
        //    sau nu un element curent val;
        //    x + val: adaugam elementul curent la suma anterioara care a inclus ultimul element
        //    se compara cu y in care am sarit un element
        // 2. daca i este impar (adica elementul curent poate fi inclus doar daca sarim peste elementele anterioare)
        //     y = max(x, max(y + val, val)); se actualizeaza suma maxima in y in care nu includem
        //     elementul curent, ci doar valorile anterioare cu un salt
        
        
        if (i % 2 == 0)
            x = max(y, max(x + val, val));
        else
            y = max(x, max(y + val, val));
    }

    
    fout << max(x, y);

    return 0;
}