Cod sursa(job #1189979)

Utilizator alexandru223Dan Alexandru Dicu alexandru223 Data 24 mai 2014 09:44:52
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.12 kb
#include <fstream>
using namespace std;
int a[6000001], b[6000001], n, i, pf, k, s, be, sol, c, p, maxi, maxi2, j;
ifstream fi ("ssm.in");
ofstream fo ("ssm.out");
int main()
{
    fi >> n; sol = -int(2e9); maxi2 = -int(2e9); c = 0;
    for ( i = 1 ; i <= n ; i++ )
      {
          fi >> a[i];
          if ( a[i] < 0 ) k++;
          b[i] = b[i-1] + a[i];
          if ( b[i] < 0 ) b[i] = 0;
      }
    if ( k == n )
      {
        p = 1;
        for ( i = 1 ; i <= n ; i++ )
          if ( maxi2 < a[i] ) { maxi2 = a[i]; pf = i; }
          fo << maxi2 << ' ' << pf << ' ' << pf;
      }
    for ( i = 1 ; i <= n ; i++ )
      {
        if ( sol < b[i] )
          {
            sol = b[i];
            be = i;
          }
      }
    for ( i = be ; i >= 1 ; i-- )
      {
        c = c + a[i];
        if ( ( c == sol ) and ( p != 1 ) )
          {
            for ( j = i - 1 ; j >= 1 ; j-- )
              {
                c = c + a[j];
                if ( c == sol ) i = j;
              }
            fo << sol << ' ' << i << ' ' << be;
            break;
          }
      }
    return 0;
}