Cod sursa(job #2289933)

Utilizator ZappaManIosif Adrian-Mihai ZappaMan Data 25 noiembrie 2018 15:38:49
Problema Subsecventa de suma maxima Scor 85
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.79 kb
#include <stdio.h>

const long NMAX = 6000005;
long v[NMAX];
long N;

int main() {
   freopen("ssm.in", "r", stdin);
   freopen("ssm.out", "w", stdout);

   scanf("%ld", &N);

   for (long i = 1; i <= N; ++i) {
      scanf("%ld", &v[i]);
   }

   long b,e;
   long cr_sum = v[1];
   long sum = cr_sum;
   b = e = 1;
   long fb, fe;
   for (long i = 2; i <= N; ++i) {
      if (cr_sum < 0) {
         b = e = i;
         cr_sum = v[i];
      } else {
         cr_sum += v[i];
         e = i;
      }
      if (cr_sum > sum) {
         sum = cr_sum;
         fb = b;
         fe = e;
      } else if (cr_sum == sum) {
         if (e - b < fe - fb) {
            fb = b;
            fe = e;
         }
      }
   }

   printf("%ld %ld %ld", sum, fb, fe);

   fclose(stdin);
   fclose(stdout);

   return 0;
}