Cod sursa(job #2985703)

Utilizator Allie28Radu Alesia Allie28 Data 26 februarie 2023 21:09:30
Problema Subsecventa de suma maxima Scor 95
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.8 kb
#include <iostream>
#include <fstream>
#include <cstring>

using namespace std;

ifstream fin("ssm.in");
ofstream fout("ssm.out");

int s[6000001];

int main()
{
    int n,i,j,p,u,maxs;
    fin>>n;
    for (i=1;i<=n;i++) {
        fin>>s[i];
        s[i]+=s[i-1];
    }
    if (s[0]<s[1]) {
        i=0;
    }
    else {
        i=1;
    }
    p=u=1;
    maxs=s[1];
    for (j=2;j<=n;j++) {
        if (s[j]-s[i]>maxs) {
            maxs=s[j]-s[i];
            p=i+1;
            u=j;
        }
        else if (s[j]==maxs) {
            if (j-i<u-p+1) {
                p=i+1;
                u=j;
            }
        }
        if (s[j-1]<s[i]) {
            i=j-1;
        }
    }
    fout<<maxs<<" "<<p<<" "<<u;


    fin.close();
    fout.close();
    return 0;
}