Cod sursa(job #1348196)

Utilizator andreeadimaDima Andreea andreeadima Data 19 februarie 2015 16:02:38
Problema Subsecventa de suma maxima Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("smm.in");
ofstream fout("smm.out");
#define LG 30005
int n,v[LG],s[LG],p[LG],maxim;
void sume (int i, int v[], int s[], int p[])
{
    if ( i == n+1 )
        return;
    if ( s[i-1] > 0 )
    {
        s[i] = v[i] + s[i-1];
        p[i] = p[i-1];
        sume(i+1,v,s,p);
    }
    else
    {
        s[i] = v[i];
        p[i] = i;
        sume(i+1,v,s,p);
    }
}
int main()
{
    fin>>n;
    int i;
    for (i = 1; i <= n; i++)
        fin>>v[i];
    fin.close();
    s[1] = v[1];
    p[1] = 1;
    sume(2,v,s,p);
    maxim = 1;
    for (i = 2; i <= n ; i++)
        if (s[i] > s[maxim])
            maxim = i;
    fout<<s[maxim]<<" "<<p[maxim]<<" "<<maxim<<'\n';
    fout.close();
    return 0;
}