Pagini recente » Cod sursa (job #751277) | Cod sursa (job #768547) | Cod sursa (job #2166352) | Cod sursa (job #996532) | Cod sursa (job #2257042)
#include <iostream>
#include <fstream>
using namespace std;
int t[16001]={0}, n, k;
int szim(int c)
{
int i=0, j=0, d=0, e=k;
while(j<n && e!=0)
{
if(d+t[j]<=c){
d+=t[j];
}
else {d=0;e--;d+=t[j];}
j++;
}
if(e>0)return 0;
else return 1;
}
int binker(int a, int b, int x)
{
if(a==b)return a;
int c=(a+b)/2;
if(szim(c))return binker(c+1,b,x);
else return binker(a,c,x);
}
int main()
{
int ossz=0, maxi=0;
ifstream be("transport.in");
ofstream ki("transport.out");
be>>n>>k;
for(int i=0;i<n;i++){
be>>t[i];
ossz+=t[i];
if(t[i]>maxi)maxi=t[i];
}
ki<<binker(maxi, ossz, (maxi+ossz)/2);
}