Pagini recente » Cod sursa (job #1905068) | Cod sursa (job #3130219) | Cod sursa (job #829517) | Cod sursa (job #3137257) | Cod sursa (job #3260932)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
int n,k,v[16001];
bool verif(int x)
{
int i,s=0,cnt=0;
for(i=1;i<=n;i++)
{
if(s+v[i]<=x)
{
s+=v[i];
}else{
s=v[i];
cnt++;
}
}
if(cnt+1<=k) return 0;
return 1;
}
int cautbin(int stanga, int dreapta)
{
int m,pos;
while(stanga<=dreapta)
{
m=(stanga+dreapta)/2;
if(verif(m)==0)
{
pos=m;
dreapta=m-1;
}else stanga=m+1;
}
return pos;
}
int main()
{
int i,s=0,maxi=0;
f>>n>>k;
for(i=1;i<=n;i++)
{
f>>v[i];
s+=v[i];
if(v[i]>maxi) maxi=v[i];
}
g<<cautbin(maxi,s);
f.close();
g.close();
return 0;
}