Cod sursa(job #2289939)

Utilizator ZappaManIosif Adrian-Mihai ZappaMan Data 25 noiembrie 2018 15:42:23
Problema Subsecventa de suma maxima Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.74 kb
#include <fstream>

using namespace std;

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

int main() {
   ifstream iff("ssm.in");
   ofstream off("ssm.out");

   iff >> N;

   for (long i = 1; i <= N; ++i) {
      iff >> 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;
         }
      }
   }

   off << sum << " " << fb << " " << fe;

   return 0;
}