Cod sursa(job #876986)

Utilizator CostanMiriamCostan Miriam CostanMiriam Data 12 februarie 2013 14:19:48
Problema Subsecventa de suma maxima Scor 95
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include <fstream>
using namespace std;
ifstream fin ("ssm.in");
ofstream fout ("ssm.out");
int n,i,p,u,maxim,pmax,umax;
int v[6000000] , d[6000000];
int main () {

    fin >> n;
    for (i=1;i<=n;i++)
        fin>>v[i];
    d[1]=v[1];
    maxim=d[1];
    p=1;u=1;
    for (i=2;i<=n;i++) {
        if (v[i]+d[i-1]>v[i]) {
            d[i]=v[i]+d[i-1];
            u=i;
        }else{
            if (v[i]+d[i-1]<v[i]) {
                d[i]=v[i];
                p=i;
                u=i;
            }else
                if (v[i]<v[p]){
                    d[i]=v[i]+d[i-1];
                    u=i;
                }else {
                    d[i]=v[i];
                    p=i;
                    u=i;

                }
        }
        if (d[i]>maxim) {
            maxim=d[i];
            pmax=p;
            umax=u;
        }
        if (d[i]==maxim&&v[pmax]>v[p]) {
            pmax=p;
            umax=u;
        }
    }
    fout <<maxim<<" "<<pmax<<" "<<umax;

    return 0;
}