Pagini recente » Cod sursa (job #2716677) | Cod sursa (job #2775094) | Cod sursa (job #2327927) | Cod sursa (job #3230467) | Cod sursa (job #2219324)
#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,scma;
while(summ>=smax)
{
i=(summ+smax)/2;
ck=0;
sc=0;
scma=0;
for(j=1; j<=n; j++)
{
sc+=v[j];
if(sc>i)
{
ck++;
sc=v[j];
}
else if(sc==i)
{
ck++;
if(scma<sc)
scma=sc;
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;
}
if(scma==sol)
out<<sol;
else out<<sol1;
return 0;
}