Pagini recente » Cod sursa (job #2558842) | Cod sursa (job #1081297) | Cod sursa (job #3184405) | Cod sursa (job #3139567) | Cod sursa (job #588504)
Cod sursa(job #588504)
#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 ;
}