Cod sursa(job #1004621)

Utilizator IancuDanielIancu Daniel Constantin IancuDaniel Data 3 octombrie 2013 11:54:55
Problema Subsecventa de suma maxima Scor 95
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <cstdio>

int main() {
   FILE *in = fopen("ssm.in", "r"), *out = fopen("ssm.out", "w");
   int N, x;
   fscanf(in, "%d", &N);
   if (N == 1) {
      fscanf(in, "%d", &x);
      fprintf(out, "%d", x);
      return 0;
   }
   else {
      int r = 0, r2 = 0, l = 1, l2 = 0;
      long long int s = 0, s2 = 0;
      for (int i = 1; i <= N; i++) {
         fscanf(in, "%d", &x);
         if (s + x < 0) {
            s = 0;
            l = i + 1;
            r = i;
         }
         else {
            if (s + x < s && s > s2) {
               s2 = s;
               l2 = l;
               r2 = r;
            }
            s += x;
            r++;
         }
      }
      if (s <= s2) {
         s = s2;
         l = l2;
         r = r2;
      }
      fprintf(out, "%lld %d %d", s, l, r);
   }
}