Pagini recente » Cod sursa (job #2986082) | Cod sursa (job #1572955) | Cod sursa (job #3030185) | Cod sursa (job #2944259) | Cod sursa (job #584407)
Cod sursa(job #584407)
#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 ;
}