Cod sursa(job #312378)

Utilizator brainwashed20Alexandru Gherghe brainwashed20 Data 5 mai 2009 21:02:56
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include<stdio.h>

#define X 16001

int n,k,v[X],sol=0;

int sum(int min)
{
    int i,t=1,s=0;

    for(i=1; i<=n; ++i)
      if(s+v[i]<=min) s+=v[i];
		 else { ++t; s=v[i]; }

    return t;
}

void srch(int st, int dr)
{
   int mijl=st+(dr-st)/2;
   if(sum(mijl)<=k)
   {
      sol=mijl;
      if(st<=mijl-1) srch(st,mijl-1);
   }
   else if(mijl+1<=dr) srch(mijl+1,dr);

}

int main()
{
    int i,sum=0,max=0;

    freopen("transport.in","r",stdin);
    freopen("transport.out","w",stdout);

    scanf("%d%d",&n,&k);

    for(i=1; i<=n; ++i)
    {
       scanf("%d",&v[i]);
       sum+=v[i];
       if(v[i]>max) max=v[i];
    }
    srch(max,sum);

    printf("%d\n",sol);

    return 0;
}