Pagini recente » Cod sursa (job #1432857) | Cod sursa (job #784268) | Cod sursa (job #1621913) | Cod sursa (job #995851) | Cod sursa (job #2219319)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
int main()
{
int n,k,i,smax=-1,summ=0,j,ck=0,sol,sol1;
in>>n;
in>>k;
int v[n];
for(i=1; i<=n; i++)
{
in>>v[i];
if(v[i]>smax)
smax=v[i];
summ+=v[i];
}
int sc=0;
while(summ>=smax)
{
i=(summ+smax)/2;
ck=0;
sc=0;
for(j=1; j<=n; j++)
{
sc+=v[j];
if(sc>i)
{
ck++;
sc=v[j];
}
else if(sc==i)
{
ck++;
sc=0;
}
if(j==n)
{
if(sc==v[j])
ck++;
}
}
if(ck<k)
{
sol=i;
summ=(summ+smax)/2-1;
}
else if(ck==k)
{
sol1=i;
summ=(summ+smax)/2-1;
}
else
smax=(summ+smax)/2+1;
}
out<<sol;
return 0;
}