Cod sursa(job #1522495)

Utilizator ThomasFMI Suditu Thomas Thomas Data 11 noiembrie 2015 19:25:13
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.58 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=-inf,p;
 
int main()
{
    int i,a;
 
    f>>n;
 
    best[0]=-inf;
 
    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;
}