Cod sursa(job #479029)

Utilizator vladtarniceruVlad Tarniceru vladtarniceru Data 21 august 2010 22:20:56
Problema Transport Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
# include <fstream>
# include <cstdio>
using namespace std;
    int n,k,st[16001],i,cit,suma;
	
	int corect (int m){
		int i,cnt=k,s=0,poz=1,pac=0,pp=0;
		i=1;
		while (i<=n && pp<=k){
			s+=st[i];
			if (st[i]>m) return 0;
			if (s>=m){
				++pp;s=0;
			}
			else ++i;
		}
		if (pp<=k) return 1;
		return 0;
	}		
	
	int cb (int in,int sf){
		int ret=0;
		while (in<=sf){
			int m= (in+sf) >> 1 , var;
			var=corect (m);
			if (var){//cauti unul mai mic si mai corect
				ret=m;
				sf=m-1;
			}
			else//daca e 0
				in=m+1;
		}
		return ret;
	}
	
	int main (){
		ifstream f ("transport.in");
		freopen ("transport.out","w",stdout);
		f>>n>>k;
		for (i=1;i<=n;++i){
			f>>st[i];
			suma+=st[i];
		}
		printf ("%d\n",cb (1,suma));
		return 0;
	}