Cod sursa(job #1815484)

Utilizator gundorfMoldovan George gundorf Data 25 noiembrie 2016 12:14:56
Problema Subsecventa de suma maxima Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <iostream>
#include <fstream>
#define Nmax 6000005
using namespace std;
ifstream fin("ssm.in");
ofstream fout("ssm.out");
int n,a[Nmax];// in a se retin sumele partiale de la 1 pana l i
void Citire ()
{int x;
    fin>>n;
    for(int i=1;i<=n;i++)
        {fin>>x;
        a[i]=a[i-1]+x;}
}
void Calculare_Ssm()
{
    int i,minim=0,xbun,ybun,xmin,summax,maxi;
    minim=a[1];
    xbun=ybun=1;
    xmin=1;
    for (i=2;i<=n;i++)
    {
        if (a[i]<=minim){xmin=i;minim=a[i];}
        maxi=a[i]-minim;// suma maxima ce se poate obtine din intervalul 1,i este S[i]-min(s[j]),j<=i
        if (maxi>summax) {summax=maxi;xbun=xmin;ybun=i;}
    }
    fout<<summax<<" "<<xbun+1<<" "<<ybun;
}
int main()
{
    Citire();
    Calculare_Ssm();
    return 0;
}