Cod sursa(job #458893)

Utilizator liviu12345Stoica Liviu liviu12345 Data 26 mai 2010 20:54:36
Problema Subsecventa de suma maxima Scor 95
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <iostream>
#include <fstream>

const int MAXN = 6e+6 ;

using namespace std ;

ifstream f ( "ssm.in" ) ;
ofstream g ( "ssm.out" ) ;

int secventa [ MAXN ] , suma [ MAXN ] ;
int nrNumere , maximum ;

int maxEu ( int a , int b )
{
  if ( a > b )
    return a ;
  return b ;
}

void citireFisier ( ) 
{
  f >> nrNumere ;
  for ( int i = 1 ; i <= nrNumere ; i++ )
  {
    f >> secventa [ i ] ;
    suma [ i ] = maxEu ( 0 , suma [ i - 1 ] ) ;
    suma [ i ] += secventa [ i ] ;
    if ( suma [ maximum ] < suma [ i ] )
      maximum = i ;
  }
}

int main ( )
{
  citireFisier ( ) ;
  int S ;
  g << suma [ maximum ] << " " ;
  int i = maximum ;
  S = suma [ maximum ] ;
  while ( S > 0 )
    S -= secventa [ i -- ] ;
  while ( secventa [ i ] == 0 || suma [ i ] == 0 )
    i -- ;
  g << i + 1 << " " << maximum << endl ;
  return 0 ;
}