Cod sursa(job #2829189)

Utilizator manutrutaEmanuel Truta manutruta Data 8 ianuarie 2022 13:12:03
Problema Subsecventa de suma maxima Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 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 = 0;
int st = 1;
ll mx = LLONG_MIN;
int resi, resst;

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 >= 0) {
            b += a[i];
        } else {
            b = a[i];
            st = i;
        }
        if (mx < b) {
            mx = b;
            resi = i;
            resst = st;
        }
    }

    cout << mx << ' ' << resst << ' ' << resi << endl;
    return 0;
}