Pagini recente » Cod sursa (job #1634203) | Cod sursa (job #2879490) | Cod sursa (job #974215) | Cod sursa (job #1060154) | Cod sursa (job #642321)
Cod sursa(job #642321)
#include <fstream>
using namespace std;
#define INT unsigned int
INT a[16001],n,k;
INT rez(INT c)
{
INT i,t,r=0;
for(i=0;i<n;i++)
{
if(a[i]>c) return 0;
t = a[i];
r++;
while(t+a[i+1]<=c&&i<n)
{
i++;
t+=a[i];
}
}
return r;
}
INT cauta(INT min, INT max)
{
INT m,r=0;
m = (min + max)/2;
while(min<max)
{
r = rez(m);
if(k>r) max = m - 1;
if(k<r) min = m + 1;
m = (min + max)/2;
if(r==k)
{
while(rez(m-1)==k) m--;
return m;
}
}
return 0;
}
int main()
{
ifstream in("transport.in");
ofstream out("transport.out");
INT i,max=0;
in >> n >> k;
for(i=0;i<n;i++)
{
in >> a[i];
max = (max > a[i] ? max : a[i]);
}
out << cauta(max,max*n/k+1);
return 0;
}