Pagini recente » Cod sursa (job #2168408) | Cod sursa (job #2939659) | Cod sursa (job #1619723) | Cod sursa (job #2405456) | Cod sursa (job #1009160)
#include<fstream>
using namespace std;
int a[16001],n,k,i;
int verificare(int x)
{
int nr=0,s=0,i;
for(i=0;i<n;i++)
{
if(a[i]>x)
return 0;
if(s+a[i]>x)
{
nr++;
s=a[i];
}
else s+=a[i];
}
if(nr+1>k)
return 0;
else return 1;
}
int main()
{
ifstream in("transport.in");
ofstream out("tranport.out");
int n,k,maxi=-1,s=0,left=-1,right,mijl;
in>>n>>k;
right=2000000;
for(i=1;i<=n;i++)
{
in>>a[i];
s+=a[i];
if(a[i]>maxi) maxi=a[i];
}
while(left<=right)
{
mijl=(left+right)/2;
if(verificare(mijl)==1)
right=mijl-1;
else left=mijl+1;
}
out<<left;
in.close();
out.close();
return 0;
}