Cod sursa(job #234278)

Utilizator free2infiltrateNezbeda Harald free2infiltrate Data 20 decembrie 2008 16:24:25
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <stdio.h>

int A[16001],n,k;

int trans(int p)
{
int x=1,S=0,i;
for (i=1;i<=n;i++)
{
if (S+A[i]<=p) S+=A[i];
else S=A[i],x++;
}
if (x<=k) return 1;
return 0;
}

int bsearch(int i,int j)
{
int mij;
while (j-i>1)
{
mij = (i+j)/2;
if (trans(mij)) j=mij;
else i=mij;
}
if (trans(i)) return i;
return j;
}

int main()
{
FILE *in = fopen("transport.in","r");
FILE *out = fopen("transport.out","w");

int i,S=0,min=0;

fscanf(in,"%d%d",&n,&k);
for (i=1;i<=n;i++) {
                        fscanf(in,"%d",&A[i]);
                        S+=A[i];
                        if (A[i]>min) min = A[i];
                   }

fprintf(out,"%d",bsearch(min,S));
}