Pagini recente » Cod sursa (job #1116663) | Cod sursa (job #2825373) | Cod sursa (job #580193) | Cod sursa (job #2696013) | Cod sursa (job #2091311)
#include <fstream>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
int n,k,a[16005],i;
long long int step=0, step1=0;
bool verificare (int valoare)
{
int i=1;
int transporturi=0;
int s=0;
while(i<=n && a[i]<=valoare)
{
s=0;
while(s+a[i]<=valoare && i<=n)
{
s=s+a[i];
i++;
}
transporturi++;
}
if(transporturi<=k && i==n+1)
return true;
else
return false;
}
int main()
{
f>>n>>k;
int smax=0;
for(i=1; i<=n; i++)
f>>a[i],smax+=a[i];
//long long int step=1<<28;
//long long int step2=0;
/*while(step)
{
if(verificare(step+step2)==false)
step2+=step;
step/=2;
}
step2++;
g<<step2<<'\n';*/
for(step=1; step<smax; step<<=1);
for(i=0; step; step>>=1)
if(i+step<smax && !verificare(i+step))
i+=step;
g<< i+1;
return 0;
}