Cod sursa(job #1946813)

Utilizator mirceagavrizimircea luca gavrizi mirceagavrizi Data 30 martie 2017 15:09:35
Problema Subsecventa de suma maxima Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include<iostream>
#include<stdio.h>
using namespace std;
int main(){
    freopen("ssm.in","r",stdin);
    freopen("ssm.out","w",stdout);
    int n,i,s,maxx,max2,st,dr,mst,mdr,h,ci,nr;
    cin>>n;
    s=0;
    maxx=-1;
    max2=-100000;
    st=1;
    dr=1;
    h=0;
    for(i=1;i<=n;i++){
        cin>>nr;
        if(nr<0&&nr>max2){
            max2=nr;
            ci=i;
        }
        if(nr<0)
            h++;
        s=s+nr;
        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){
        cout<<max2<<" "<<ci<<" "<<ci;
    }
    else
        cout<<maxx<<" "<<mst<<" "<<mdr;
return 0;
}