Pagini recente » Cod sursa (job #1363819) | Cod sursa (job #1125434) | Cod sursa (job #1358649) | Cod sursa (job #2047102) | Cod sursa (job #3312774)
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
///cream o functie care a verifice daca nr de transporturi este bun
int se_poate(int c,int k,int v[],int n) {
int t=1;
int suma=0;
int i;
for (i=1;i<=n;i++) {
if (suma+v[i]<=c)
suma=suma+v[i];
else {
t++;
suma=v[i];
}
}
return t<=k;
}
int main()
{
int n,k,i,v[16000],mid;
fin>> n >> k;
int st=0;
int dr=0;
for (i=1;i<=n;i++) {
fin>> v[i];
if (v[i]>st)
st=v[i];
dr=dr+v[i];
}
/// facem o cautare binara
while (st<dr) {
mid=(st+dr)/2;
if(se_poate(mid,k,v,n))
dr=mid;
else
st=mid+1;
}
fout<< st;
return 0;
}