Pagini recente » Cod sursa (job #238811) | Cod sursa (job #354356) | Cod sursa (job #285734) | Cod sursa (job #1321971) | Cod sursa (job #2757847)
#include <iostream>
#include <fstream>
using namespace std;
int v[16001];
int main()
{
ifstream cin("transport.in");
ofstream cout("transport.out");
int n, maxc=0, minc=0, mid, dr, st, sumac=0, i=1, k, cnt=0, sol;
cin>>n>>k;
for(int i=1; i<=n; i++)
{
cin>>v[i];
if(v[i]>minc)
minc=v[i];
maxc+=v[i];
}
dr=maxc;
st=minc;
//cout<<dr<<" "<<st;
//cout<<"3242938792379";
while(st<=dr)
{
mid=(st+dr)/2;
//cout<<st<<" "<<mid<<" "<<dr<<endl;
//cout<<"mid = "<<mid<<endl;
for(int i=1; i<=n; i++)
{
//cout<<"i = "<<i<<endl;
//cout<<"v[i] = "<<v[i]<<endl;
sumac+=v[i];
//cout<<"sumac = "<<sumac<<endl;
if(sumac>mid)
{
cnt++;
//cout<<"cnt = "<<cnt<<endl;
sumac=v[i];
//cout<<"sumac = "<<sumac<<endl;
}
}
//if(sumac<=mid)
cnt++;
if(cnt<=k)
dr=mid-1, sol=mid;
else
st=mid+1;
/*cout<<"st = "<<st<<endl;
cout<<"dr = "<<dr<<endl;*/
sumac=0;
cnt=0;
}
cout<<sol;
return 0;
}