Pagini recente » Cod sursa (job #16124) | Cod sursa (job #2662992) | Cod sursa (job #1544791) | Cod sursa (job #210835) | Cod sursa (job #2669398)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int n, v[16001],i,st,dr,mij,bs,tv[16001],drum,k,sum;
int main()
{
fin>>n>>k;
for(i=1;i<=n;i++){
fin>>v[i];
sum+=v[i];
}
st=1;
dr=sum;
for(i=0;i<=sum;i++)
tv[i]=i;
while(st<=dr)
{
mij=(st+dr)/2;
//fout<<mij<<endl;
bs=0;
drum=0;
for(i=1;i<=n && drum<=k;i++)
{
bs+=v[i];
if(bs>tv[mij])
{
//fout<<bs<<" ";
drum++;
bs=0;
if(v[i]<=tv[mij])
i--;
}
}
if(bs!=0)
{
bs=0;
drum++;
}
//fout<<drum<<endl;
if(drum<k)
dr=mij-1;
else
if(drum>k)
st=mij+1;
else
break;
}
fout<<mij;
return 0;
}