Cod sursa(job #140744)

Utilizator Mishu91Andrei Misarca Mishu91 Data 22 februarie 2008 11:11:58
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include<cstdio>

FILE *fin=freopen("transport.in","r",stdin),
     *fout=freopen("transport.out","w",stdout);

int n,t,a[16000],min,max,mm;

void citire()
{
  scanf("%d %d",&n,&t);
  for(int i=1;i<=n;i++)
  {
    scanf("%d",&a[i]);
    if(a[i]>min) 
      min=a[i];
    max+=a[i];
  }
}

void solve()
{
  int m,li=min,lf=max;
  while(li<=lf)
  {
    m=(li+lf)/2;
    int k=1,s=0;
    for(int i=1;i<=n;i++)
    {
      s+=a[i];
      if(s>m) {s=0; i--; k++;}
    }
    if(k>t) 
      li=m+1;
    else
    {
      lf=m-1;
      mm=m;
    }
  }
  printf("%d",mm);
} 
    
    
int main()
{
  citire();
  solve();
  return 0;
}