Cod sursa(job #2134154)

Utilizator DanielznaceniDaniel Danielznaceni Data 17 februarie 2018 18:04:33
Problema Subsecventa de suma maxima Scor 95
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <iostream>
#include <fstream>
#define lim 6000003
using namespace std;
ifstream in("ssm.in");
ofstream out("ssm.out");

long long n, i, st, dr, mini, x;
long long sum=0, v[lim];
int main()
{
   // int n, i, st=0, dr=0, mini=0, x=0;
    in>>n;
    for(i=1; i<=n; ++i)
        in>>v[i];
    for(i=1; i<=n; ++i)
    {
        v[i]+=v[i-1];
        if(v[i]-mini>sum)
        {
            sum=v[i]-mini;
            dr=i;
            st=x;
        }
        else if(v[i]-mini==sum && i-x<dr-st && i==st)
        {
            dr=i;
            st=x;
        }
        if(v[i]<mini)
        {
            mini=v[i];
            x=i+1;
        }
    }
    out<<sum<<" "<<st<<" "<<dr;
    return 0;
}