Cod sursa(job #3192094)

Utilizator Manolea_Teodor_StefanManolea Teodor Stefan Manolea_Teodor_Stefan Data 11 ianuarie 2024 15:14:27
Problema Subsecventa de suma maxima Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.96 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("ssm.in");
ofstream fout("ssm.out");
struct answer {
    long long val = LLONG_MIN;
    int st;
    int dr;
} ans;

int n;
long long s;

int main() {
    fin >> n;
    fin >> s;
    int st=1,dr=1;
    if (ans.val <= s) {
        ans = {s,st,dr};
    }
    for (int i = 2; i <= n; i++, dr = i) {
        long long rd;
        fin >> rd;
        if (rd + s >= rd) {
            s = rd + s;
            if (s > ans.val) {
                ans = {s, st, dr};
            } else if (s == ans.val) {
                if (st < ans.st) {
                    ans = {s, st, dr};
                } else if (st == ans.st && dr < ans.dr) {
                    ans = {s, st, dr};
                }
            }
        } else {
            s = rd;
            st = i;
            if (s > ans.val) {
                ans = {s,st,dr};
            }
        }
    }
    fout << ans.val << ' ' << ans.st << ' ' << ans.dr;

    return 0;
}