Pagini recente » Cod sursa (job #1513591) | Cod sursa (job #1248663)
#include <cstdio>
using namespace std;
unsigned long int n,k,v[1000],s,d,j;
FILE *f;
bool se_poate(unsigned long int m,unsigned long int t)
{
unsigned long int s=0,i=1,k=1;
while((i<=t)&&(k<=n))
if(m==v[k]-s){s=v[k];i++;k++;}
else if(m>v[k]-s)k++;
else if(m<v[k]-s){s=v[k-1];i++;}
if(k>n)
return true;
return false;
}
int main()
{
f=fopen("transport.in","r");
fscanf(f,"%ld %ld",&n,&k);
fscanf(f,"%ld",&v[1]);
s=v[1];
for(j=2;j<=n;j++)
{
fscanf(f,"%ld",&v[j]);
v[j]+=v[j-1];
if(s>v[j])
s=v[j];
}
fclose(f);
d=v[n];
while (s!=d)
{
if(se_poate((s+d)/2,k))
d=(s+d)/2;
else
s=(s+d)/2+1;
}
f=fopen("transport.out","w");;
fprintf(f,"%ld",s);
fclose(f);
return 0;
}