Cod sursa(job #630146)
Utilizator | Data | 4 noiembrie 2011 19:33:55 | |
---|---|---|---|
Problema | Transport | Scor | 80 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.53 kb |
#include<stdio.h>
#define N 16001
long a[N],n,i,k,s[N],x,c,t,j;
int main()
{FILE *f1=fopen("transport.in","r"),*f2=fopen("transport.out","w");
fscanf(f1,"%ld%ld",&n,&k);
for(i=1;i<=n;i++)
fscanf(f1,"%ld",&a[i]),s[i]=s[i-1]+a[i];
for(j=1;j<=s[n];j<<=1);
for(c=0;j;j>>=1)
if(c+j<=s[n])
{for(i=1,t=x=0;i<=n;)
if(s[i]-s[t]<=c+j)
i++;
else
t=i-1,x++;
if(s[n]-s[t]<=c+j)
x++;
if(x>k)
c+=j;}
fprintf(f2,"%ld",c+1);
return 0;}