Cod sursa(job #1100056)

Utilizator multislashRobert Morosanu multislash Data 6 februarie 2014 16:05:55
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include<cstdio>
using namespace std;
int c,n,k,s,j,v[16001];
bool ok(int q)
{
  int s,i,nr;
  s=0;
  nr=1;
  for(i=1;i<=n;i++)
  {
    if(s+v[i]<=q) s+=v[i];
    else if(v[i]<=q)
    {
      nr++;
      s=v[i];
    }
    else return 0;
  }
  if(nr<=k) return 1;
  else return 0;
}
int cautbin(int st,int dr)
{
  if(st==dr) return st;
  int med;
  med=(st+dr)/2;
  if(ok(med)) return cautbin(st,med);
  else return cautbin(med+1,dr);
}
int main()
{
  freopen("transport.in","r",stdin);
  freopen("transport.out","w",stdout);
  scanf("%d%d",&n,&k);
  for(j=1;j<=n;j++)
  {
  scanf("%d",&v[j]);
  s+=v[j];
  }
  printf("%d",cautbin(1,s));
}