Pagini recente » Cod sursa (job #3286264) | Cod sursa (job #2160509) | Cod sursa (job #3145084) | Cod sursa (job #1243360) | Cod sursa (job #1259234)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
long long n,k,i,a[16600],poz,mx;
long long trans(long long x){
long long j = 1,nr=0,y;
if(x < mx) return 0;
while(j <= n){
y = x;
while(y >= a[j]){
y -= a[j];
j++;
}
nr++;
}
return nr;
}
long long caut(long long k)
{
long long left = 1, right = 16005;
long long mij;
while(left <= right){
mij = (left + right)/2;
if(trans(mij) == k)
return mij;
else
if(trans(mij) > k)
left = mij + 1;
else
if(trans(mij) < k)
right = mij - 1;
}
return 0;
}
int main()
{
f >> n >> k;
for(i = 1; i <= n; i++){
f >> a[i];
if(a[i] > mx) mx = a[i];
}
poz=caut(k);
if(caut(k)<mx) g<< mx;
else{
while(trans(poz)==k){
poz--;
}
g<<poz+1;
}
return 0;
}