Pagini recente » Cod sursa (job #1672007) | Cod sursa (job #2438728) | Cod sursa (job #3259701) | Cod sursa (job #2288786) | Cod sursa (job #1669199)
#include <iostream>
#include<fstream>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
int x,v[16005],s,d,n,k;
int transport(int m)
{
int i=1,t,ti,nr;
ti=m;t=ti;nr=k;
while(i<=n&&nr>0)
{
if(v[i]<=t){t-=v[i];i++;}
else {nr--;t=ti;}
}
if(i>n) return 1;
else return 0;
}
int cautbin(int s,int d)
{
int m;
while(s<=d)
{
m=s+(d-s)/2;
if(transport(m)==1)
{
if(m==s) return m;
else {
if(transport(m-1)==0) return m;
else d=m-1;
}
}
else s=m+1;
}
}
int main()
{
int i,r,ma=0;
long long sum=0;
f>>n>>k;
for(i=1;i<=n;i++)
{f>>v[i];sum+=v[i];if(v[i]>ma) ma=v[i];}
r=cautbin(ma,sum);
g<<r;
return 0;
}