Cod sursa(job #1120856)

Utilizator fluture.godlikeGafton Mihnea Alexandru fluture.godlike Data 25 februarie 2014 10:27:51
Problema Subsecventa de suma maxima Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 1.39 kb
#include<iostream>
#include<fstream>
using namespace std;
ifstream fin("ssm.in");
ofstream fout("ssm.out");
int *v;
struct chestie
{
       int s;
       int f;
       int l;
};
int main()
{
    int n;
    long int max = 0;
    bool f = 1;
    fin>>n;
    v = new int[n]();
    for(int i =0; i< n; i++)
    {
            fin>>v[i];
    }
    for(int i =0; i< n; i++) if(v[i]>0) f = 0;
    int first = 1, last = 1, sum= 0;
    if(f == 0)
    {
    chestie dyn[n];
    for(int i = 0; i< n; i++)
    {
            sum+=v[i];
            if(sum<=0)
            {
                      first = i+2;
                      sum = 0;
            }
            last = i+2;
            dyn[i].s = sum;
            dyn[i].l = last;
            dyn[i].f = first;
    }
    for(int i =0; i< n; i++)
    {
            if(dyn[i].s > max)max = dyn[i].s;
    }
    for(int i =0; i< n; i++)
    {
            if(dyn[i].s == max)
            {
                        sum = dyn[i].s;
                        first = dyn[i].f;
                        last = dyn[i].l;
            }
    }
    last--;
    }
    else
    {
        max  = -1000000000;
        for(int i =0; i< n; i++)
        {
                if(v[i] > max) {max = v[i];first = i+1;last = i+1;}
        }
        sum = max;
    }
    fout<<sum<<" "<<first<<" "<<last<<"\n";
    return 0;
}