Pagini recente » Cod sursa (job #2429849) | Cod sursa (job #2837685) | Cod sursa (job #367937) | Cod sursa (job #1065966) | Cod sursa (job #1248620)
#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 j=1,i=1;
while((i<=t)&&(j<=n))
if(v[j]==m*i){i++;j++;}
else if(v[j]<m*i)j++;
else if(v[j]>m*i)i++;
if(j>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;
}