Pagini recente » Cod sursa (job #1105199) | Istoria paginii runda/abc | Cod sursa (job #2904704) | Cod sursa (job #761144) | Cod sursa (job #1033803)
#include <iostream>
#include <fstream>
using namespace std;
int v[16000];
ifstream f("transport.in");
ofstream g("transport.out");
int nr_drumuri(int n,int c,int v[16000])
{
int drum=0,i=1,s;
while(i<n)
{
s=0;
while(s<=c && i<=n)
s=s+v[i++];
drum++;
i--;
}
return drum;
}
int cautare_binara(int st,int dr,int k,int n)
{
int m;
while (st!=dr)
{
m=(st+dr)/2;
if(nr_drumuri(n,m,v)==k)
return m;
if(nr_drumuri(n,m,v)<k)
dr=m;
else
st=m+1;
}
if(st==k)
return st;
}
int main()
{
int n,k,i,cmin=1,cmax=0;
f>>n;
f>>k;
cout<<endl;
for(i=1;i<=n;i++)
f>>v[i];
for(i=1;i<=n;i++)
{
cmax+=v[i];
if(v[i]>cmin)
cmin=v[i];
}
g<<cautare_binara(cmin,cmax,k,n);
f.close();
g.close();
return 0;
}