Cod sursa(job #1189970)

Utilizator alexandru223Dan Alexandru Dicu alexandru223 Data 24 mai 2014 09:22:43
Problema Subsecventa de suma maxima Scor 95
Compilator cpp Status done
Runda Arhiva educationala Marime 0.97 kb
#include <fstream>
using namespace std;
int a[6000001], b[6000001], n, i, pf, k, s, be, sol, c, p, maxi, maxi2;
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 ) )
          {
            fo << sol << ' ' << i << ' ' << be;
            break;
          }
      }
    return 0;
}