Pagini recente » Cod sursa (job #2145404) | Cod sursa (job #1447485) | Cod sursa (job #2027476) | Cod sursa (job #1688981) | Cod sursa (job #2379217)
#include<bits/stdc++.h>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
int v[22552],n,suma,maxim,sol,k;
int main()
{
f>>n>>k;
for(int i=1;i<=n;++i)
{
f>>v[i];
suma+=v[i];
maxim=maxim>v[i]?maxim:v[i];
}
int stanga=maxim;
int dreapta=suma;
while(stanga<=dreapta)
{
int mij=stanga+(dreapta-stanga)/2;
int s=0;
int mis=0;
for(int i=1;i<=n;++i)
{
s+=v[i];
if(s==mij)
{
mis++;
s=0;
}
if(s>mij)
{
mis++;
s=v[i];
}
}
if(s>0)
mis++;
if(mis<=k)
{
sol=mij;
dreapta=mij-1;
}
else
stanga=mij+1;
}
g<<sol;
}