Cod sursa(job #2829165)

Utilizator manutrutaEmanuel Truta manutruta Data 8 ianuarie 2022 12:57:53
Problema Subsecventa de suma maxima Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.96 kb
#include <iostream>
#include <fstream>
#include <climits>
using namespace std;

#define ll long long
#define cout g

ifstream f("ssm.in");
ofstream g("ssm.out");

#define MAXN 60000002
int n;
int a[MAXN];
ll b[MAXN];
int st[MAXN];
ll mx = LLONG_MIN;
int resi;

int main()
{
    f >> n;
    for (int i = 1; i <= n; ++i) {
        f >> a[i];
        if (mx < a[i]) {
            mx = a[i];
            resi = i;
        }
    }
    if (mx < 0) {
        cout << mx << ' ' << resi << ' ' << resi << endl;
        return 0;
    }

    for (int i = 1; i <= n; ++i) {
        if (b[i-1] >= 0) {
            b[i] = b[i-1]+a[i];
            st[i] = st[i-1];
        } else {
            b[i] = a[i];
            st[i] = i;
        }
    }

    for (int i = 1; i <= n; ++i) {
        if (mx < b[i]) {
            mx = b[i];
            resi = i;
        }
    }

    cout << b[resi] << ' ' << st[resi] << ' ' << resi << endl;
    return 0;
}