Cod sursa(job #3195635)

Utilizator GoreaRaresGorea Rares-Andrei GoreaRares Data 21 ianuarie 2024 13:26:23
Problema Subsecventa de suma maxima Scor 85
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.27 kb
#include <iostream>
#include <fstream>
#define int long long
#define mini -1e17

using namespace std;

int v[6000001];

signed main()
{
    ifstream cin("ssm.in");
    ofstream cout("ssm.out");
    int n, i, nr, s = 0, smax = mini, st = 1, dr, ok = 0;
    cin >> n;
    for(i = 1; i <= n; i++)
    {
        cin >> v[i];
        nr = v[i];
        if(nr >= 0)
        {
            ok = 1;
        }
    }
    if(ok == 0)
    {
        for(i = 1; i <= n; i++)
        {
            nr = v[i];
            if(s + nr > nr)
            {
                s += nr;
                dr = i;
            }
            else
            {
                s = nr;
            }
            if(s > smax)
            {
                st = dr = i;
                smax = s;
            }
        }
    }
    else
    {
        for(i = 1; i <= n; i++)
        {
            nr = v[i];
            if(s + nr > nr)
            {
                s += nr;
            }
            else
            {
                s = nr;
                st = dr = i;
            }
            if(s > smax)
            {
                dr = i;
                smax = s;
            }
        }
    }
    cout << smax << " " << st << " " << dr;
    return 0;
}