Cod sursa(job #2472013)
Utilizator | Data | 11 octombrie 2019 21:48:10 | |
---|---|---|---|
Problema | Transport | Scor | 30 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 0.99 kb |
#include <bits/stdc++.h>
using namespace std;
ifstream ci("transport.in");
ofstream cou("transport.out");
int n,k,st=1,dr=16001,mij,v[16001];
int verif (int cap)
{
int nrtrans=1,cap1=0,i;
for(i=1; i<=n; i++)
{
cap1+=v[i];
if(cap1>cap)
{
cap1=v[i];
nrtrans++;
}
}
return nrtrans;
}
int cautarebin()
{
int p,rez=0;
while(st<=dr)
{
mij=(st+dr)/2;
p=verif(mij);
if(p<k )
{
dr=mij-1;
}
else
{
if(p>k)
{
st=mij+1;
}else{
if(p==k){
rez=mij;
dr=mij-1;
}
}
}
}
return rez;
}
int main()
{
int i,x,mx=0;
ci>>n>>k;
for(i=1; i<=n; i++)
{
ci>>v[i];
mx=max(v[i],mx);
}
st=mx;
x=cautarebin();
cou<<x;
}