Pagini recente » Cod sursa (job #2270720) | Cod sursa (job #2790384) | Cod sursa (job #982442) | Cod sursa (job #2368540) | Cod sursa (job #3224947)
#include <bits/stdc++.h>
#define QED fin.close(); fout.close(); return 0;
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
#define cin fin
#define cout fout
const int MAX=16001;
int sp[MAX],n,k;
bool poatetransporta(int c)
{
int tr=0,indramas=1;
while(indramas<=n && tr<=k)
{
int st=indramas, dr=n, mij, nr=0;
while(st<=dr)
{
mij=(st+dr)/2;
if(sp[mij]-sp[indramas-1]<=c)
{
nr=mij+1;
st=mij+1;
}
else
{
dr=mij-1;
}
}
indramas=nr;
tr++;
}
if(tr>k)
return 0;
else
return 1;
}
int main()
{
int x,maxi=0;
cin>>n>>k;
for(int i=1; i<=n; i++)
{
cin>>x;
maxi=max(maxi, x);
sp[i]=sp[i-1]+x;
}
int st=maxi, dr=sp[n], mij, nr=sp[n];
while(st<=dr)
{
mij=(st+dr)/2;
if(poatetransporta(mij))
{
nr=mij;
dr=mij-1;
}
else
{
st=mij+1;
}
}
cout<<nr;
QED
}