Cod sursa(job #1524527)

Utilizator daneel95Holteiu Daniel-Ninel daneel95 Data 14 noiembrie 2015 11:09:46
Problema Subsecventa de suma maxima Scor 15
Compilator cpp Status done
Runda Arhiva educationala Marime 1.29 kb
#include <fstream>

using namespace std;

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

struct valoare{
    int sum;
    int inceput;
    int sfarsit;
}y;
int n,x;

int main()
{
    int i,max,min,sum=0,inceput,sfarsit,nr=1;
    in>>n;
    in>>x;
    min=max=sum=x;
    y.inceput=y.sfarsit=1;
    y.sum=x;
    inceput=sfarsit=1;
    for(i=2;i<=n;i++)
    {
        in>>x;
        sum+=x;
        nr++;
        if(sum < min && inceput<=sfarsit)
        {
            //out<<"Am intrat aici la "<<inceput<<" < "<<sfarsit<<"\n";
            min=sum;
            inceput=nr;

        }
        if(sum-min > max)
        {
            max=sum - min;
            sfarsit=nr;
        }
        if(max > y.sum && inceput<=sfarsit)
        {
            //out<<"intru aici la inceput="<<inceput<<" sfarsit="<<sfarsit<<"\n";
            y.sum=max;
            y.inceput=inceput;
            y.sfarsit=sfarsit;
        }
        //out<<"Suma="<<sum<<"\t Suma max="<<max<<"\t inceput="<<inceput<<"\t sfarsit="<<sfarsit<<"\n";
    }
    //inceput++;
    //out<<max<<" "<<inceput+1<<" "<<sfarsit;
    if(y.inceput==y.sfarsit) out<<y.sum<<" "<<y.inceput<<" "<<y.sfarsit;
        else out<<y.sum<<" "<<y.inceput+1<<" "<<y.sfarsit;
    in.close();
    out.close();
    return 0;
}