Cod sursa(job #588504)

Utilizator UgleaEduFMI - Edward UgleaEdu Data 8 mai 2011 13:09:56
Problema Transport Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <iostream>
#include <fstream>
using namespace std;
int v[16000] , NrSalt , NrTrans;
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 cautare( int st , int dr )
{
 int mijl , t ;   
 if(st > dr )
  return -1;
 else
 {
   mijl = (st + dr) /2;
   t = test(mijl , NrSalt);
   if( t == NrTrans)
    return mijl;
   if( t > NrTrans )
    return cautare( mijl , dr );
   else
    return cautare( st , mijl ); 
 }
}  
int main ()
{
 int i , s = 0 , max = 0 , 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 ];
 }
 mijl = cautare ( s , max);
 while ( test( mijl - 1 , NrSalt) == NrTrans)
  --mijl;
       
 fstream g("transport.out",ios::out);
 g << mijl ;
 return 0 ;
}