Pagini recente » Cod sursa (job #3129083) | Cod sursa (job #2352845) | Cod sursa (job #1433084) | Cod sursa (job #1079709) | Cod sursa (job #2807681)
#include <fstream>
using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
int v[16002];
int calculare(int vol, int n)
{
int i,cnt=0,sum=0;
for(i=1;i<=n;i++)
{
sum=sum+v[i];
if(sum==vol)
{
sum=0;
cnt++;
}
else
if(sum>vol)
{
sum=v[i];
cnt++;
}
}
if(sum!=0)
cnt++;
return cnt;
}
int main()
{
int n,k,sum=0,st,dr,ras=-1,mij,i;
in>>n>>k;
for(i=1;i<=n;i++)
{
in>>v[i];
sum=sum+v[i];
}
st=1;
dr=sum;
while(st<=dr && ras==-1)
{
mij=(st+dr)/2;
if(calculare(mij,n)==k)
ras=mij;
else
if(calculare(mij,n)<k)
dr=mij-1;
else
st=mij+1;
}
out<<ras;
return 0;
}