Cod sursa(job #370599)

Utilizator GotenAmza Catalin Goten Data 1 decembrie 2009 16:54:22
Problema Transport Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include<fstream.h>

int n,s,k,i,fin,p,a[16000];



int fct(int x)
{
 p=0;
 i=1;
 s=0;
 fin=0;
 while(i<=n&!fin)
  {
   while(s+a[i]<=x&&!fin){s+=a[i];if(i<n)i++;else fin=1;}
   p++;s=0;
   }
 if(p>k)return 0;
 else return 1;
 }



int main()
{
 int x=0,l,r,m;
 ifstream f("transport.in");
 ofstream g("transport.out");
 f>>n>>k;
 for(i=1;i<=n;i++){f>>a[i];if(a[i]>x)x=a[i];}
 if(n<100)
 {
  while(!fct(x))x++;
  g<<x;
  }
 else
 {  
 while(!fct(x))x<<=1;
 l=(x>>1)+1;r=x;
 while(l<r)
 {
  m=l+((r-l)>>1);
  if(!fct(m))l=m+1;
  else r=m-1;
  }
 if(!fct(r)){while(!fct(r))r++;g<<r;}
 else {while(fct(r))r--;g<<r+1;}
 }
 return 0;
 }