Pagini recente » Cod sursa (job #448604) | Cod sursa (job #2487669) | Cod sursa (job #2031524) | Cod sursa (job #2655248) | Cod sursa (job #1012667)
#include<fstream>
using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
int v[16001],n,k,l=0,r=0,cnt=0,ok=1;
int verif2(int x)
{
int s=0,g=1;
for(int i=1; i<=n; i++)
{
s+=v[i];
if(s>x)
{
g++;
s=0;
i--;
}
}
if(g<=k) return 1;
return 0;
}
int main()
{
int mid=0;
in>>n>>k;
for(int i=1 ;i<=n; i++)
{
in>>v[i];
r+=v[i];
if(v[i]>l) l=v[i];
}
int aux;
while(l<r)
{
mid=(l+r)/2;//out<<"left"<<" "<<l<<" \n";
//out<<"mid"<<" "<<mid<<" \n";out<<"right"<<" "<<r<<" \n";
if(verif2(mid)==0)
l=mid+1;
else
{
aux=mid;
r=mid;
}
}
/* for(int i=l; i<=r; i++)
{
if(verif2(i)==1)
{
out<<i;
break;
}
}*/
out<<aux;
in.close();
out.close();
return 0;
}