Pagini recente » Cod sursa (job #1751176) | Cod sursa (job #380156) | Cod sursa (job #402111) | Cod sursa (job #2959958) | Cod sursa (job #1014579)
#include <iostream>
#include <fstream>
#include <cstring>
#include <string>
#include <climits>
#include <algorithm>
#include <cmath>
#include <queue>
#include <deque>
#include <iomanip>
#include <stack>
#include <cstdio>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
#define baza 10
#define MAX 16100
#define MOD 666013
typedef long long int lli;
lli i,n,a[MAX], p, k, s, maxi;
lli verifica(lli x)
{
lli p=1;
lli cx=x;
for(i=1;i<=n;i++)
{
// cout<<cx<<" ";
if(a[i]<=cx)
{
cx-=a[i];
}
else
{
cx=x;
p++;
i--;
}
}
return p;
}
lli BS(lli inc, lli sf)
{
lli mare=-1, mid;
while(inc<=sf)
{
mid=inc+(sf-inc)/2;
p=verifica(mid);
if(p<k)
{
sf=mid-1;
}
else if(p==k)
{
mare=mid;
sf=mid-1;
}
else
{
mare=mid;
inc=mid+1;
}
}
return mare;
}
int main()
{
fin>>n>>k;
maxi=1;
for(i=1;i<=n;i++)
{
fin>>a[i];
if(a[maxi]<a[i])
maxi=i;
s+=a[i];
}
fout<<BS(a[maxi], s);
return 0;
}