Cod sursa(job #371104)

Utilizator ProcopliucProcopliuc Adrian Procopliuc Data 3 decembrie 2009 19:45:40
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
# include <stdio.h>
int q,min,i,k,n,a[20000],sum;

  void verif (int c)
  { int i,s=0;
    q=0;
  for (i=1;i<=n;i++)
  {
   s=s+a[i];
   if (a[i]>c)
   q=k+1;

   if (s>c)
   {
    q++;
    s=a[i];
   }

  }
   if (s!=0)
   q++;

  }


  int caut (int i,int j)
  {
   int mij=(i+j)/2;

    verif (mij);

   if (i>=j)
    {
    if (q<=k)
    if (mij<min)
    min=mij;

    return 0;
    }
  if (q>k)
   caut (mij+1,j);
  else
  {
   if (min>mij)
   min=mij;

   caut (i,mij-1);
   }
  }



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

 scanf ("%i%i",&n,&k);
 for (i=1;i<=n;i++)
  {
  scanf ("%i",&a[i]);
  sum=sum+a[i];
  }
     min=sum;
   caut (1,sum);
  printf ("%i",min);

  return 0;
  }