Pagini recente » Cod sursa (job #3165154) | Cod sursa (job #3165010) | Cod sursa (job #2914323) | Cod sursa (job #1271023) | Cod sursa (job #1766453)
#include <bits/stdc++.h>
using namespace std;
int a,b,globalMinus = 0;
int salt[16001],sum[16001];
int findBest(int low, int up,int ans){
while (low <= up)
{
int mid = low + (up-low)/2;
if (sum[mid] - globalMinus == ans)
return mid;
if (sum[mid] - globalMinus < ans)
low = mid + 1;
else
up = mid - 1;
}
return up;
}
int main(){
//ifstream fin("input.in");
ifstream fin("transport.in");
ofstream fou("transport.out");
ios_base::sync_with_stdio(0);
int n,k,ans = -1;
fin >> n >> k;
memset(sum,0,sizeof(sum));
for(int i=1;i<=n;i++){
fin >> salt[i];
sum[0] += salt[i];
sum[i] = sum[0];
if(salt[i] > ans)
ans = salt[i];
}
int copyOfK = k;
int low = 1,up = n;
while( k > 0 ){
a = low;
b = findBest(low, up, ans);
low = b + 1;
globalMinus = sum[b];
k--;
if(k == 0 && low <= up){
k = copyOfK;
low = 1;
up = n;
ans++;
globalMinus = 0;
}
}
fou << ans;
}