Cod sursa(job #1946803)

Utilizator mirceagavrizimircea luca gavrizi mirceagavrizi Data 30 martie 2017 15:04:22
Problema Subsecventa de suma maxima Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
#include<iostream>
int v[6000001];
#include<stdio.h>
using namespace std;
int main(){
    freopen("ssm.in","r",stdin);
    freopen("ssm.out","w",stdout);
    int n,i,s,maxx,st,dr,mst,mdr,h,ci;
    cin>>n;
    for(i=1;i<=n;i++)
        cin>>v[i];
    s=0;
    maxx=-1;
    st=1;
    dr=1;
    h=0;
    for(i=1;i<=n;i++){
        if(v[i]<0)
            h++;
        s=s+v[i];
        if(s<0){
            s=0;
            st=dr+1;
        }
        if(s==maxx){
            if(dr-st+1<=mdr-mst+1){
                mst=st;
                mdr=dr;
            }
        }
        if(s>maxx){
            maxx=s;
            mst=st;
            mdr=dr;
        }
        dr++;
    }
    if(h==n){
        maxx=v[1];
        ci=1;
        for(i=2;i<=n;i++){
            if(v[i]>maxx){
                maxx=v[i];
                ci=i;
            }
        }
        cout<<maxx<<" "<<ci<<" "<<ci;
    }
    else
        cout<<maxx<<" "<<mst<<" "<<mdr;
return 0;
}