Pagini recente » Cod sursa (job #1350871) | Cod sursa (job #2511264) | Cod sursa (job #1161943) | Cod sursa (job #3192684) | Cod sursa (job #1305218)
#include<iostream>
#include<fstream>
using namespace std;
unsigned int k,s,c,a[16000],n,t,i,w;
int p;
int verifica(int m)
{
w=0; //capacitate continua
p=k; //transporturi totale
for (i=1;i<=n;i++)
{
w+=a[i];
if (w>m)
{
p--;w=a[i];
}
}
if(w>0) p--;
if (p>=0) return 1;
else return 0;
}
int main()
{
ifstream f("transport.in");
ofstream g("transport.out");
f>>n>>k;
t=0; //capacitate totala
p=k; //transporturi curente
int max=0;
for(i=1;i<=n;i++)
{f>>a[i];t+=a[i];
if(a[i]>max) max=a[i];}
//c=[max,t]
c=max;//capacitatea ceruta
unsigned int st=c;
unsigned int dr=t;
while (st<=dr)
{if (verifica((st+dr)/2)==1)
{c=(st+dr)/2;
dr=(st+dr)/2-1;}
else
{st=(st+dr)/2+1;}
}
g<<c;
f.close();
g.close();
return 0;
}