Pagini recente » Cod sursa (job #3206313) | Cod sursa (job #1853535) | Cod sursa (job #1314307) | Cod sursa (job #859928) | Cod sursa (job #2069509)
#include <iostream>
#include<bits/stdc++.h>
using namespace std;
int n,k;
vector<int> v;
int NrTransporturi(int x)
{
int i=0,NrTransp=1,Ocupare=0;
while(i<n)
{
if(Ocupare+v[i]<=x) {Ocupare+=v[i];++i;continue;}
Ocupare=v[i];
NrTransp++;
i++;
}
return NrTransp;
}
int cautbin(int left,int right,int val)
{
int st=left,dr=right,LastApp=-1;
while(st<=dr)
{
int mij=(dr-st)/2+st;
int fct=NrTransporturi(mij);
if(fct<val){dr=mij-1;continue;}
if(fct>val){st=mij+1;continue;}
LastApp=mij;
dr=mij-1;
}
return LastApp;
}
int main()
{
ifstream f("transport.in");
ofstream g("transport.out");
f>>n>>k;int i;
v.resize(n);int suma=0,maxim=0;
for(i=0;i<n;++i) {f>>v[i];suma+=v[i];maxim=max(maxim,v[i]);}
g<<cautbin(maxim,suma,k);
return 0;
}