Pagini recente » Istoria paginii utilizator/grifeplay | Diferente pentru utilizator/marta_dianna intre reviziile 14 si 13 | Diferente pentru deque-si-aplicatii intre reviziile 36 si 35 | Monitorul de evaluare | Cod sursa (job #1587029)
#include <iostream>
#include <fstream>
using namespace std;
//2^28 valoarea maxima posibila a volumului transportat
ifstream in("transport.in");
ofstream out("transport.out");
int p[16000], n, k;
bool sePoate(int x)
{
//cout<<x<<"\n";
int cnt=0, index=0, ccap=0;
while(index<n)
{
ccap=0;
if(p[index]>x)
return 0;
while(ccap+p[index]<=x)
ccap+=p[index++];
cnt++;
}
if(cnt<=k)
return 1;
return 0;
}
int main()
{
in>>n>>k;
for(int i=0;i<n;i++)
in>>p[i];
int vol=0, pas=1<<28;
while(pas)
{
if(!sePoate(vol+pas))
vol+=pas;
pas>>=1;
}
out<<vol+1;
}