Cod sursa(job #1435005)

Utilizator k_ounu_eddyIacob Eduard k_ounu_eddy Data 11 mai 2015 20:36:01
Problema Subsecventa de suma maxima Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.78 kb
#include<fstream>
#include<iostream>
#define MAX 6000000
using namespace std;

int best[MAX];

int main()
{
    fstream fin("ssm.in");
    ofstream fout("ssm.out");
    int N, idxI, idxSf;
    fin>>N;
    int a;
    fin>>a;
    best[0] = a;
    idxI = 0;
    idxSf = 0;
    int maxSum = a;
    int sum = a;
    int nrElementeActual = 1;
    int nrElementePrev = MAX;

    int idxMaxI = 0;
    int idxMaxSf = 0;

    for(int i=1;i<N;i++)
    {
        fin>>a;	
        if(sum>=0)
        {
    	    if(sum + a >= 0)
            {
                sum+=a;
                nrElementeActual++;
                if(sum>maxSum ||  (sum == maxSum && nrElementeActual<nrElementePrev))
                {
                    maxSum = sum;
                    idxSf = i;        
                    idxMaxSf = i;
                    idxMaxI = idxI;     
                }            
            } else 
            {
                idxI = i;
                idxSf=i;
                sum = a;
                if(sum>maxSum || (sum == maxSum && nrElementeActual<nrElementePrev))
                {
                   maxSum = sum;
                   idxMaxSf = i;
                   idxMaxI = i;
                }
                nrElementePrev = nrElementeActual;
                nrElementeActual = 1;
            }
        } else
        {
            sum = a;
            
            nrElementeActual = 1;            

            
            if(sum>maxSum || (sum == maxSum && nrElementeActual<nrElementePrev))
            {
                maxSum = sum;
                idxMaxSf = i;
                idxMaxI = i;
            }
              
            maxSum = sum;
            idxI = i;
            idxSf = i;
        }
    }
    fout<<maxSum<<" "<<idxMaxI+1<<" "<<idxMaxSf+1;
    fin.close();
    fout.close();
    return 0;
}