Cod sursa(job #584407)

Utilizator UgleaEduFMI - Edward UgleaEdu Data 25 aprilie 2011 13:45:47
Problema Transport Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <iostream>
#include <fstream>
using namespace std;
int v[16000];
int test( int nr , int n )
{   
 int j , suma = 0 , t = 0 ;
 for ( j = 0 ; j < n ; j++ )
  {
   suma += v[ j ] ;
   if ( suma > nr )
   {
    suma = v [ j ] ;
    ++t ;
   }
  }
  while ( suma > 0 )
  {
   ++t;
   suma -= nr;
  }     
  return t; 
}
int main ()
{
 int i , NrTrans , s = 0 , max = 0 ,NrSalt , t;
 int st , dr , mijl , gasit = 0 ;
 fstream f("transport.in",ios::in);
 f >> NrSalt ; f >> NrTrans ;
 for( i = 0 ; i < NrSalt ; i++ )
 {
  f >> v[ i ];
  if ( v [ i ] > max )
   max = v [ i ];
  s += v[ i ];
 }
 dr = s ;
 st = max ; 
 while( !gasit && dr > st )
 {
  mijl = ( dr + st ) / 2 ;
  t=test( mijl , NrSalt) ;
  if ( t == NrTrans )
  gasit = 1 ;
  else
   if ( t > NrTrans )
    st = mijl ;
   else 
    dr = mijl; 
 }
 while ( test( mijl - 1 , NrSalt) == NrTrans)
  --mijl;
       
 fstream g("transport.out",ios::out);
 g << mijl ;
 return 0 ;
}