Pagini recente » Cod sursa (job #1374088) | Cod sursa (job #1870349) | Cod sursa (job #2139904) | Cod sursa (job #678060) | Cod sursa (job #2218642)
#include <fstream>
#include <iostream>
using namespace std;
int a[16000], k, n, smax, vmax;
void citire()
{
ifstream f("transport.in");
f>>n>>k;
for(int i=0;i<n;i++)
{
f>>a[i];
vmax = (vmax > a[i])? vmax:a[i];
smax += a[i];
}
}
bool OK(int C)
{
int nrtrans,s,i;
s=0;
i=0;
nrtrans=0;
while(i<n)
{
while(i<n && s + a[i] <=C)
{
s+=a[i];
i++;
}
s=0;
nrtrans++;
}
if(nrtrans<=k)
return true;
return false;
}
void rez()
{
int sol;
ofstream g("transport.out");
int st = vmax, dr = smax, mijl;
while(st <= dr)
{
mijl = (st + dr)/2;
if( OK(mijl) == 1)
{
sol = mijl;
dr = mijl - 1;
}
else
st = mijl + 1;
}
g<<sol;
}
int main()
{
citire();
rez();
return 0;
}