Cod sursa(job #141162)

Utilizator SycronVene Tian Sycron Data 22 februarie 2008 20:07:00
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 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;   
}