Pagini recente » Cod sursa (job #1862382) | Cod sursa (job #1716258) | Cod sursa (job #2452016) | Cod sursa (job #2051044) | Cod sursa (job #1098970)
#include <fstream>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
inline int max(int a, int b)
{
if(a>b) return a;
return b;
}
inline int min(int a, int b)
{
if(a<b) return a;
return b;
}
int n,k;
int a[16001],vmin,vmax;
int ls,ld;
int main()
{
f>>n>>k;
for(int i=1; i<=n; i++)
{f>>a[i]; if(a[i]>ls) ls=a[i];ld+=a[i];}
int mij,i,rez,nr,s;
while(ls<=ld)
{
s=0; nr=0;
mij=(ls+ld)/2;
for(i=1; i<=n; i++)
{
if(s+a[i]<=mij) s+=a[i];
else
{nr++; s=a[i];}
}
if(s)
nr++;
if(nr<=k)
{
ld=mij-1;
rez=mij;
}
else
ls=mij+1;
}
if(nr<=k)
g<<mij;
else
g<<rez;
return 0;
}