Cod sursa(job #1905175)

Utilizator alex72101Sfat Alexandru alex72101 Data 5 martie 2017 22:33:18
Problema Transport Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <fstream>
#include <cstring>
#include <cmath>
using namespace std;
  
ifstream is ("transport1.txt");
ofstream os ("transport2.txt");
  
int n, k, v[16001],i,suma,st,dr,capacitate,t;

int main()
{
	int max = 0;
    is >> n >> k;
    for(i=0;i<n;i++){
    	is >> v[i];
    	suma += v[i];
    	if(max < v[i]){
    		max = v[i];
		}
	}
	
	st = max;
	dr = suma;
	suma = 0;

	while (st<=dr){
		capacitate = (st + dr)/2;
		t = 1;
		
		suma =0;
		
		for (i=0;i<n;i++){
			if (suma + v[i] <= capacitate){
				suma += v[i];
			}else{
				suma =v[i];
				t++;
			}
		}
		if (t <= k){
			dr = capacitate - 1;
		}else{
			st = capacitate + 1;
		}
	}
	
	os << st;
	
	

}