Pagini recente » Cod sursa (job #1952573) | Cod sursa (job #623032) | Cod sursa (job #978254) | Cod sursa (job #2920820) | Cod sursa (job #1339275)
#include <iostream>
#include <fstream>
using namespace std;
int n,k,st=0,dr=0,mij,x;
int a[16003];
int calcul(int dim)
{
int nr=0,sum=0;
for(int i=0;i<n;i++)
{
if(sum<dim && sum+a[i]<=dim)
sum=sum+a[i];
else
{
sum=a[i];
nr++;
}
}
//cout << sum<< " ";
return nr+1;
}
int main()
{
ifstream in("transport.in");
ofstream out("transport.out");
in >> n >> k;
for(int i=0;i<n;i++){
in >> a[i];
dr=dr+a[i];
if(st<a[i])
st=a[i];
}
while(st<=dr)
{
mij=(st+dr)/2;
x=calcul(mij);
if(x==k){
while(calcul(mij-1)==k)
mij--;
out << mij;
break;
}
if(x<k)
dr=mij-1;
if(x>k)
st=mij+1;
}
// cout << calcul(9);
return 0;
}