Cod sursa(job #1707270)
Utilizator | Data | 24 mai 2016 18:36:43 | |
---|---|---|---|
Problema | Transport | Scor | 90 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.72 kb |
#include <fstream>
using namespace std;
int n, t, v[16000];
bool sePoate( int k ) {
int i, c=k, nr=1;
for( i=1; i<=n; i++ ) {
if( v[i] > c ) {
c = k;
nr++;
}
if( v[i] > c )
return false;
if( nr > t )
return false;
c -= v[i];
}
return true;
}
int main()
{
ifstream in("transport.in");
ofstream out("transport.out");
int i, k, pas;
in >> n >> t;
for( i=1; i<=n; i++ ) {
in >> v[i];
}
pas = ( 1 << 28 );
i=0;
while( pas != 0 ) {
if( !sePoate(i+pas) )
i += pas;
pas /= 2;
}
out << 1+i;
return 0;
}