Cod sursa(job #1717845)

Utilizator Liviu_Ionut_MoantaMoanta Ionut Liviu Liviu_Ionut_Moanta Data 15 iunie 2016 22:05:22
Problema Subsecventa de suma maxima Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include <fstream>
using namespace std;
ifstream fin ("smm.in");
ofstream fout("smm.out");
int n,v[6000003],s[6000003],i,sol,sol1;
long long minim,maxim,pmax,jmax,minim1;
int main(){
    fin>>n;
    s[0]=0;
    minim=2000000000LL;
    maxim=-2000000000LL;
    minim1=-2000000000LL;
    for(i=1;i<=n;i++){
        fin>>v[i];
        s[i]=s[i-1]+v[i];
        if(s[i]<minim){
            minim=s[i];
            sol=i;
        }
        if(s[i]!=minim){
            if(s[i]-minim>maxim){
                maxim=s[i]-minim;
                pmax=sol;
                jmax=i;
            }
        }
    }
    int ok=0;
    for(i=1;i<=n;i++){
        if(v[i]>=0){
            ok=1;
        }
        if(v[i]>minim1){
            minim1=v[i];
            sol1=i;
        }
    }
    if(ok==1){
    fout<<maxim<<" "<<pmax+1<<" "<<jmax;
    }
    else{
        fout<<minim1<<" "<<sol1<<" "<<sol1;
    }
    return 0;
}