Pagini recente » Cod sursa (job #1637592) | Rating Bachis Ovidiu (ovidiubachis) | Cod sursa (job #1995536) | Cod sursa (job #2223936) | Cod sursa (job #210828)
Cod sursa(job #210828)
using namespace std;
#include<fstream>
const int NMAX1=256000000,NMAX2=16005;
int v[NMAX2], N,K, i;
int numar(int m)//este numarul de transporturi necesare pentru capacitatea aleasa;
{
int s=0,nr=0,i=1;
while(i<=N)
{
if(s+v[i]<=m)
{
s+=v[i];i++;
}
else
{
nr++;s=0;
}
}
nr++;
return nr;
}
int cautare(int p, int u)
{
while(p!=u)
{
if(numar((p+u)/2)<=K)
u=(p+u)/2;
else
p=(p+u)/2+1;
}
if (numar(p)<=K)
return p;
else
return p+1;
}
int main()
{
int max=0,svect=0;
ifstream in("transport.in");
ofstream out("transport.out");
in>>N>>K;
for(i=1;i<=N;++i)
{
in>>v[i];svect+=v[i];
if(v[i]>=max)
max=v[i];
}
out<<cautare(max,svect)<<'\n';
in.close();out.close();
return 0;
}