Pagini recente » Cod sursa (job #1689547) | Profil robertpoe | Cod sursa (job #3285416) | Cod sursa (job #220076) | Cod sursa (job #2496802)
//https://www.infoarena.ro/problema/transport
#include <fstream>
using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
int n, k, maxi, poz;
int v[16005];
long long suma;
int verif(int vol)
{
int sum=0, drum=1;
for(int i=1; i<=n; i++)
{
if(sum+v[i]<=vol)
sum+=v[i];
else if (v[i]>vol)
return 0;
else if (sum+v[i]>vol)
{
sum=v[i];
drum++;
}
}
if(k>=drum)
return 1;
return 0;
}
void caut_bin(int st, int dr)
{
while(st<=dr)
{
int mij=(st+dr)/2;
if(verif(mij)==1)
{
poz=mij;
dr=mij-1;
}
else
st=mij+1;
}
}
int main()
{
in>>n>>k;
for(int i=1; i<=n; i++)
{
in>>v[i];
suma+=v[i];
maxi=max(v[i],maxi);
}
caut_bin(maxi,suma);
out<<poz;
in.close();
out.close();
return 0;
}