Pagini recente » Cod sursa (job #1286921) | Cod sursa (job #821898) | Cod sursa (job #1130668) | Cod sursa (job #1999217) | Cod sursa (job #1849566)
#include <iostream>
#include <cstdio>
int v[16001];
int nrtrans (int c, int n, int max)
{
int i,transport=0,copiec=0;
copiec=c;
/*if (c<max)
{
transport=0;
return transport;
}*/
for (i=0; i<=n-1; ++i)
{
if (c-v[i]==0)
{
if (c==copiec)
++transport;
else
{
c=c-v[i];
}
}
else
{
if (c-v[i]>0)
{
if (c==copiec)
++transport;
c=c-v[i];
}
else
{
if (c-v[i]<0)
{
c=copiec;
++transport;
c=c-v[i];
}
}
}
}
return transport;
}
int main()
{
FILE *intrare,*iesire;
int n,i,k,st=1,dr=16000,mij=0,max=-1,num=0;
intrare=fopen("transport.in","r");
iesire=fopen("transport.out","w");
fscanf(intrare,"%d%d",&n,&k);
for (i=0; i<=n-1; ++i)
{
fscanf(intrare,"%d",&v[i]);
}
for (i=0; i<=n-1; ++i)
{
if (v[i]>max)
{
max=v[i];
}
}
st=1;
while (st<dr)
{
mij=(st+dr)/2;
num=nrtrans(mij,n,max);
if (num>k)
{
st=mij+1;
}
else
{
if (num<=k)
{
dr=mij;
}
}
}
if (nrtrans(st,n,max)==k)
{
fprintf(iesire,"%d",st);
}
else
{
fprintf(iesire,"%d",dr);
}
}