Cod sursa(job #317958)

Utilizator funkydvdIancu David Traian funkydvd Data 26 mai 2009 09:51:26
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.63 kb
#include <fstream.h>
#define N 16001
//using namespace std;
ifstream f1 ("transport.in");
ofstream f2 ("transport.out");
int v[N],n,k,f,max;
int valid (int c)
{
 int nr=1, suma=0;
 f=1;
 for (int i=1; i<=n; i++)
 {
  suma+=v[i];
  if (suma>c) {nr++; suma=v[i];}
  if (nr>k) return 0;
 }
 return (nr<=k);
}
int main ()
{int t,i,st,dr,k2,val;
 f1>>n>>k;
 t=0;
 for (i=1 ;i<=n;i++)
 {f1>>v[i];
  t+=v[i];
  if (v[i]>max) max=v[i];
 }
 st=max;
 dr=t;
 val=max;
 while (st<=dr)
 {
   k2=(st+dr)/2;
   if (valid(k2)&&!valid(k2-1)) val=k2;
   if (valid(k2))  dr=k2-1;
    else st=k2+1;
 }
 f2<<val;
 return 0;
}