Cod sursa(job #1138292)

Utilizator ThomasFMI Suditu Thomas Thomas Data 9 martie 2014 21:03:30
Problema Subsecventa de suma maxima Scor 95
Compilator cpp Status done
Runda Arhiva educationala Marime 0.6 kb
#include <fstream>
using namespace std;

#define NMax 6000001
#define inf 2100000000

ifstream f("ssm.in");
ofstream g("ssm.out");

int n,best[NMax],pr[NMax],mx,p;

int main()
{
    int i,a;

    best[0]=-inf;
    f>>n;
    if(n==1)
    {
        f>>a;
        g<<a<<" 1 1\n";
    } else {

    for(i=1;i<=n;i++)
    {
        f>>a;
        if(best[i-1]<0) {pr[i]=i;best[i]=a;}
        else {pr[i]=pr[i-1];best[i]=best[i-1]+a;}
        if(best[i]==mx) {if(i-pr[i]>p-pr[p]) p=i;}
        else if(best[i]>mx) {mx=best[i];p=i;}
    }

    g<<mx<<" "<<pr[p]<<" "<<p<<"\n";}

    f.close();
    g.close();
    return 0;
}