Cod sursa(job #364425)

Utilizator Bogdan_CCebere Bogdan Bogdan_C Data 15 noiembrie 2009 18:01:26
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include<fstream>
using namespace std;
int n,a[16001],d,s,k,maxim=0,v;
int nr_trans(int C)
{int i=1,contor=0,s=0;
    while(i<=n)
     { if(a[i]>C) return 0;
     if(s+a[i]<=C) {s+=a[i];}
      else {contor++;s=a[i]; }         
 i++;
               }
     return contor+1;}
 int cautbin(int x)
{
    int lo, hi, mid, last = 0;

    for (lo = maxim, hi = s; lo <= hi; )
    {
	mid = lo + (hi-lo) / 2;
	if (nr_trans(mid)<=x) last = mid, hi = mid-1;
	else lo = mid+1;
    }
    return last;
}


int main()
{freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
scanf("%d %d",&n,&k);
maxim=0;s=0;
for(int i=1;i<=n;i++) {scanf("%d",&a[i]);s+=a[i];if(a[i]>maxim) maxim=a[i];}

int lg,i,l,cont=0;
printf("%d",cautbin(k));

    
    return 0;}