Cod sursa(job #862273)

Utilizator superman_01Avramescu Cristian superman_01 Data 22 ianuarie 2013 15:20:42
Problema Subsecventa de suma maxima Scor 25
Compilator cpp Status done
Runda Arhiva educationala Marime 0.97 kb
#include<fstream>
  
  
using namespace std;
ifstream f("ssm.in");
ofstream g("ssm.out");
  
  
int n, x[6000000],s,m,start, finish,start2,finish2; 
int main()
{   int i;
    f>>n;
    for(i=1; i<=n; i++)
        f>>x[i];
    for(i=1; i<=n; i++)
    {
        if( s+x[i]>x[i] )
            s=s+x[i];
        else
        {
            s=x[i];
            start2=start;
            start = i;
        }
        if(s>m)
        {
            m=s;
            finish2=finish;
            finish=i;
        }
        else
            if(s==m)
            {
                if(start2<start)
                {
                    start=start2;
                    finish=finish2;
                }
                else
                    if((finish2-start2)<finish-start)
                    {
                        finish=finish2;
                        start=start2;
                    }
            }
    }
    g<<m<<" "<<start+1<<" "<<finish;
}