Pagini recente » Cod sursa (job #351971) | Cod sursa (job #69574) | Cod sursa (job #1484055) | Cod sursa (job #2146230) | Cod sursa (job #2437351)
#include <bits/stdc++.h>
using namespace std;
int v[16000],n,k;
int M=16000*16000;
ifstream in ("transport.in");
ofstream out ("transport.out");
bool verificare(int volumcurent)
{
int volum=0,nrt=0;
for(int i=0; i<n; i++)
{
if(v[i]>volumcurent)
return 0;
if(v[i]>volum)
{
nrt++;
volum=volumcurent;
}
volumcurent-=v[i];
}
if (nrt<=k) return 1;
return 0;
}
int main()
{
int i,left=1,right=M;
in>>n>>k;
for(i=1; i<=n; i++)
{
in>>v[i];
}
while(left<right)
{
int mid =left+right;
mid/=2;
if(verificare(mid))
{
right =mid;
}
else
{
left =mid+1;
}
}
out<<left;
return 0;
}