Cod sursa(job #1596867)

Utilizator moowalkerMihai Turcanu moowalker Data 11 februarie 2016 14:41:10
Problema Subsecventa de suma maxima Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <iostream>
#include <fstream>
#define Max(a,b) a>b ? a:b
using namespace std;
fstream f;
int n,i,s[6000000],best[6000000];
int Max,st,fin,k;
int main()
{
    f.open("ssm.in",ios::in);
    f>>n;
    for (i=0;i<n;i++)
    {
        f>>s[i];
    }
    best[0]=s[0];
    for (i=1;i<n;i++)
    {
        best[i]=Max(best[i-1]+s[i],s[i]);
    }
    Max=best[0];
    for (i=1;i<n;i++)
    {
        if (Max<best[i]) Max=best[i];
    }
    for (i=0;i<n;i++)
    {
        if (best[i]==Max)
        {
            fin=i+1;
            k=fin-1;
            while(best[k]>0)
            {
                k--;
            }
            st=k+2;
        }
    }
    f.close();
    f.open("ssm.out",ios::out);
    f<<Max<<" "<<st<<" "<<fin;
    f.close();
    return 0;
}