Pagini recente » Cod sursa (job #2573082) | Cod sursa (job #353483) | Cod sursa (job #2688288) | Cod sursa (job #2049300) | Cod sursa (job #2331101)
#include <bits/stdc++.h>
using namespace std;
int v[16001],n,k;
int verificare(int x)
{
int i,aux,nr=0;
aux=x;
for (i=1;i<=n;i++)
if (aux-v[i]<0) {nr++; aux=x;}
else aux-=v[i];
return nr;
}
int main()
{
ifstream f("transport.in");
ofstream g("transport.out");
int maxi=0,s=0,i,st,dr,mij;
f>>n>>k;
for (i=1;i<=n;i++)
{
f>>v[i];
if(v[i]>maxi) maxi=v[i];
s=s+v[i];
}
st=maxi;
dr=s;
while (st<dr)
{
mij=(st+dr)/2;
if (verificare(mij)==k) {st=dr+1; while(verificare(mij)==k) mij--;}
else if(verificare(mij)<k) dr=mij-1; else st=mij+1;
}
while (verificare(mij)==k) mij--;
g<<mij+1;}