Cod sursa(job #2220296)

Utilizator MoldooooooooMoldoveanu Stefan Moldoooooooo Data 11 iulie 2018 11:25:52
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <fstream>
using namespace std;
ifstream fin("ssm.in");
ofstream fout("ssm.out");
int N, i, stmx, drmx, st, dr, lg, positivek, posmx;
int long long S, Sum, Summx, mx;
int main()
{
    fin>>N;
    mx=-9999999;
    st=dr=1;
    for(i=1; i<=N; i++){
        fin>>S;
        if(S>=0)positivek++;
        if(S>mx){mx=S; posmx=i;}
        if(!lg){
            if(S>=0) {lg++; Sum=S; st=dr=i;}
            else if(S>Summx) {Summx=S; stmx=drmx=i;}
        }
        else{
            if(S+Sum<=0){
                Sum=lg=0;
                st=dr=i+1;
            }
            else{
                Sum+=S;
                lg++;
                dr++;
            }
        }
        if(Sum>Summx){
            Summx=Sum;
            stmx=st;
            drmx=dr;
        }
    }
    if(!positivek) fout<<mx<<" "<<posmx<<" "<<posmx;
    else
    fout<<Summx<<" "<<stmx<<" "<<drmx;
    return 0;
}