Cod sursa(job #3179601)

Utilizator razviOKPopan Razvan Calin razviOK Data 3 decembrie 2023 22:19:08
Problema Subsecventa de suma maxima Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.1 kb
#include <stdlib.h>
#include <stdio.h>

int main() {

    freopen("ssm.in","r",stdin);
    freopen("ssm.out","w",stdout);
    unsigned long long N,ind_start,ind_end,best_start,best_end;
    int x,max_sum=(1<<31),sum=0,y;

    scanf("%llu",&N);
    for(unsigned long long i=0;i<N;i++)
    {
        scanf("%d",&x);
        if(x>=0){
            if(sum==0){
                if(y!=0)
                ind_start=i+1;

                ind_end=i+1;
            }
            else ind_end=i+1;
            sum+=x;
            if(sum==max_sum && best_end-best_start>ind_end-ind_start){
                best_end=ind_end;
                best_start=ind_start;
            }
            if(sum>max_sum){
                max_sum=sum;
                best_start=ind_start;
                best_end=ind_end;
            }
        }
        else{
            sum+=x;
            if(sum<0)
                sum=0;

            if(x>max_sum){
                max_sum=x;
                best_end=i+1;
                best_start=i+1;
            }
        }
        y=x;
    }

    printf("%d %llu %llu",max_sum,best_start,best_end);
    return 0;
}