Cod sursa(job #1479821)

Utilizator CalinCojoFMI Cojocaru Calin George CalinCojo Data 1 septembrie 2015 13:58:20
Problema Subsecventa de suma maxima Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include <iostream>
#include <fstream>
using namespace std;

ifstream f("ssm.in",ios::in);
ofstream g("ssm.out",ios::out);

int v[7000001],n;
void ssm()
{
    int sum[n] , minSum = 0 ,maxSum = -20000000 ,lIndex = 1,rIndex = 1 ,auxSum,aux_lIndex = 1;

    for (int i = 1 ; i < n ; i++)
    {
        // actualizez daca e cazul minSum comparandu-l cu sum[i-1]
        if(sum[i-1] < minSum)
        {
            minSum = sum[i-1];
            aux_lIndex = i+1;
        }
        //creez sum[i]
        sum[i] = sum[i-1] + v[i];
        // vad ce subsir care se termina in i are suma maxima
        auxSum = sum[i] - minSum;
        // compar subsirul cu maxSum, eventual schimband indicii
        if(auxSum > maxSum)
        {
            maxSum = auxSum;
            rIndex = i + 1;
            lIndex = aux_lIndex;
        }

    }
    //cout<<maxSum<<" "<<lIndex<<" "<<rIndex;
    g<<maxSum<<" "<<lIndex<<" "<<rIndex;
}
int main()
{
    f>>n;
    for(int i = 0 ; i < n ;i++)
        f>>v[i];
    ssm();
}