Pagini recente » Clasament selectie_girls_camp_2011 | Cod sursa (job #620784) | Cod sursa (job #2207376) | Cod sursa (job #136840) | Cod sursa (job #2257007)
#include <iostream>
#include <fstream>
#include <climits>
using namespace std;
int teszt(int meret, int N, int *t)
{
int fuvar = 0, matracok = 0;
for(int i = 0; i < N; i ++)
{
if(matracok + t[i] > meret)
{
fuvar ++;
matracok = t[i];
}
else matracok += t[i];
}
return fuvar + 1;
}
int main()
{
freopen("transport.in","rt",stdin);
freopen("transport.out","wt",stdout);
int N, K, t[16000]= {0}, e=0, u, fuvar, meret;
int maxi = INT_MIN;
cin>>N>>K;
// u = 16000 * N * 2;
u = 32;
for(int i = 0; i < N; i ++)
{
cin>>t[i];
if(maxi<t[i])maxi = t[i];
}
if(N<=K)
{
cout<<maxi;
return 0;
}
while(e!=u)
{
meret = (e + u)/2;
fuvar = teszt(meret, N, t);
if(fuvar <= K)
{
u = meret;
}
else if(fuvar > K)
{
e = meret + 1;
}
/*else
{
u = meret;
while(e!=u && (e+1)!=u)
{
meret = (e+u)/2;
fuvar = teszt(meret, N, t);
if(fuvar > K)
{
e = meret;
} else u = meret;
}
meret = u;
e = u;
}*/
}
cout<<e;
return 0;
}