Cod sursa(job #2841375)

Utilizator Vlad_NistorNIstor Vlad Vlad_Nistor Data 29 ianuarie 2022 17:17:25
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.15 kb
	
#include <iostream>
	
#include <fstream>
	
#define MAX 16002
	
using namespace std;
	
int n,k,cmax,cmin,v[MAX];
	
 
	
ifstream fin("transport.in");
	
ofstream fout("transport.out");
	
 
	
int transporturi(int c){
	
    int actual = 0, ans = 1;
	
    for(int i = 1; i <= n; i++){
	
        /// vrem sa adaugam v[i] in camionul acutal
	
        if(actual+v[i] <= c){
	
            actual += v[i];
	
        }else{
	
            /// nu mai incape
	
            ans++;
	
            actual = v[i];
	
        }
	
    }
	
    return ans;
	
}
	
 
	
int main()
	
{
	
    fin >> n >> k;
	
    for(int i = 1; i <= n; i++){
	
        fin >> v[i];
	
        cmax += v[i];
	
        cmin = max(cmin, v[i]);
	
    }
	
    int rez = 0;
	
    /// cautam cel mai mic nr c pt nrT <= k
	
    int st = cmin, dr = cmax;
	
    while(st <= dr){
	
        int mij = (st+dr)/2;
	
        int nrT = transporturi(mij);
	
        if(nrT <= k){
	
            rez = mij;
	
            dr = mij-1;
	
        }else{
	
            st = mij+1;
	
        }
	
    }
	
    fout << rez << "\n";
	
    return 0;
	
}