Pagini recente » Cod sursa (job #1763458) | Cod sursa (job #1346326) | Cod sursa (job #2296791) | Cod sursa (job #282923) | Cod sursa (job #2067165)
#include <iostream>
#include <fstream>
using namespace std;
int n, li, ls, m, s, sol, a[16010], i, Max, nr, k;
int main()
{
ifstream f("transport.in");
ofstream g("transport.out");
f>>n>>k;
for(i=1;i<=n;i++)
{ f>>a[i]; if(a[i]>Max) Max=a[i]; s+=a[i]; }
li=Max; ls=s; m=(li+ls)/2;
while(li<=ls)
{ s=0; nr=0;
for(i=1;i<=n;i++)
{ s+=a[i];
if(s>m && i!=n) {nr++; s=a[i];}
else
if(i==n) nr++; }
if(s-m>0) nr++;
if(nr<=k)
{ sol=m;ls=m-1; } else
li=m+1;
m=(li+ls)/2; }
g<<sol; return 0;
f.close();
g.close();
}