Cod sursa(job #3297375)

Utilizator Arhiva_EducationalaArhiva Educationala Arhiva_Educationala Data 22 mai 2025 15:45:26
Problema Subsecventa de suma maxima Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.94 kb
#include <bits/stdc++.h>

using namespace std;

struct ssm {
    int l;
    int r;
    long long sum;
};

ssm better( ssm a, ssm b ) {
    if ( a.sum != b.sum ) {
        if ( a.sum > b.sum ) return a;
        return b;
    }
    if ( a.l != b.l ) {
        if ( a.l < b.l ) return a;
        return b;
    }
    if ( a.r < b.r ) return a;
    return b;
}
int main() {
    ifstream fin( "ssm.in" );
    ofstream fout( "ssm.out" );
    int n;
    fin >> n;
    long long sumPref = 0;
    int smallI = 0;
    long long sumI = 0;
    ssm best = {1, 1, -(1LL << 33)};

    for ( int i = 1, x; i <= n; i ++ ) {
        fin >> x;
        sumPref += x;
        ssm cur = { smallI + 1, i, sumPref - sumI };
        best = better( best, cur );
        if ( sumPref < sumI ) {
            sumI = sumPref;
            smallI = i;
        }
    }
    fout << best.sum << ' ' << best.l << ' ' << best.r << '\n';
    return 0;
}