Cod sursa(job #3179598)

Utilizator razviOKPopan Razvan Calin razviOK Data 3 decembrie 2023 22:12:50
Problema Subsecventa de suma maxima Scor 95
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.06 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;

    scanf("%llu",&N);
    for(unsigned long long i=0;i<N;i++)
    {
        scanf("%d",&x);
        if(x>0){
            if(sum==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;
            }
        }
    }

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