Pagini recente » Cod sursa (job #2598955) | Cod sursa (job #2947677) | Cod sursa (job #3000985) | Cod sursa (job #2260965) | Cod sursa (job #610188)
Cod sursa(job #610188)
#include<cstdio>
#include<fstream>
#include<iostream>
using namespace std;
int n,k,v[16005];
int maxim,sum,sol;
int Verificare(int x)
{
int i,nr=1,suma=0;
for(i=1;i<=n;i++)
{
if(suma+v[i]>x)
{
nr++;
suma=v[i];
}
else
suma+=v[i];
}
if(nr<=k)
return 1;
return 0;
}
int CautareBinara()
{
int st,dr,m;
st=maxim;
dr=sum;
while(st<=dr)
{
m=(st+dr)/2;
if(Verificare(m)==1 && ((m>maxim && Verificare(m-1)==0) || m==maxim))
return m;
else
if(Verificare(m)==1)
dr=m-1;
else
st=m+1;
}
return 3.14;
}
int main()
{
int i;
fstream f,g;
f.open("transport.in",ios::in);
g.open("transport.out",ios::out);
f>>n>>k;
for(i=1;i<=n;i++)
{
f>>v[i];
if (v[i]>maxim)
maxim=v[i];
sum+=v[i];
}
sol=CautareBinara();
g<<sol;
}