Cod sursa(job #2393362)

Utilizator ViAlexVisan Alexandru ViAlex Data 31 martie 2019 13:16:10
Problema Subsecventa de suma maxima Scor 55
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.98 kb
#include <iostream>
#include<fstream>
#include<string>
using namespace std;
ifstream in("ssm.in");
ofstream out("ssm.out");
int n,a[600000];
void read()
{
    in>>n;
    for(int i=0; i<n; i++)
    {
        in>>a[i];
    }

}
int maxsum()
{
    int i1=0,i2=0,maxi1,maxi2;
    int sum=0,maxsum=-999999999;
    for(int i=0; i<n; i++)
    {
        if(sum+a[i]<a[i])
        {
            i1=i;
            sum=a[i];
        }
        else
        {
            sum+=a[i];
            i2=i;
        }
        if(sum>=maxsum)
        {
            if(maxsum==sum)
            {
                if(maxi2-maxi1+1>i2-i1+1)
                {
                    maxsum=sum;
                    maxi1=i1;
                    maxi2=i2;
                }

            }
            else
            {
                maxsum=sum;
                maxi1=i1;
                maxi2=i2;
            }

        }
    }
    out<<maxsum<<" "<<maxi1+1<<" "<<maxi2+1;

}
int main()
{
    read();
    maxsum();
    return 0;
}