Cod sursa(job #1268024)

Utilizator LidiadobreaDobrea Lidia Ioana Lidiadobrea Data 20 noiembrie 2014 16:09:47
Problema Subsecventa de suma maxima Scor 95
Compilator cpp Status done
Runda Arhiva educationala Marime 1.43 kb
#include <fstream>
using namespace std;
int n,v[6000001],i,j,smax,poz1,poz2,s,a,si,sj,nrmax,p,ok;
int main(){
    ifstream in("ssm.in");
    ofstream out("ssm.out");
    ok=1;
    in>>n;
    in>>v[1];
    si=v[1];
    sj=v[1];
    nrmax=-2147483648;
    if(v[1]>0) ok=0;
    else{
        nrmax=v[1];
        p=1;
    }
    for(i=2;i<=n;i++){
        in>>a;
        v[i]=v[i-1]+a;
        if(v[i]>0) ok=0;
        else if(nrmax<a){
            nrmax=a;
            p=i;
        }
        if(v[i]>si){
            si=v[i];
            poz2=i;
        }
    }
    sj=v[1];
    poz1=1;
    for(i=2;i<poz2;i++)
        if(v[i]<sj){
            poz1=i;
            sj=v[i];
        }
    /*for(i=2;i<=n;i++){
        in>>a;
        v[i]=v[i-1]+a;
        if(v[i]>0) ok=0;
        else if(nrmax<a){
            nrmax=a;
            p=i;
        }
        if(v[i]<sj){
            sj=v[i];
            poz1=i;
        }
        if(v[i]>si){
            si=v[i];
            poz2=i;
        }
    }*/
    //smax=-2147483648;
    smax=si-sj;
    /*for(i=1;i<=n;i++){
        s=0;
        for(j=i;j<=n;j++){
            s+=v[j];
            if(s>smax){
                smax=s;
                poz1=i;
                poz2=j;
            }
        }
    }*/
    if(ok==0)
    out<<smax<<" "<<poz1+1<<" "<<poz2;
    else out<<nrmax<<" "<<p<<" "<<p;
    in.close();
    out.close();
    return 0;
}