Cod sursa(job #3297911)

Utilizator IonescuRaresIonescu Rares-Mihai IonescuRares Data 24 mai 2025 12:51:47
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <cmath>

using namespace std;

ifstream fin("transport.in");
ofstream fout("transport.out");

int v[16005];

int merg(int n, int mid){
    int rasp=1;
    int suma=0;
    for(int i=0;i<n;i++){
        suma+=v[i];
        if(suma>mid){
            suma=v[i];
            rasp++;
        }
    }
    return rasp;
}

int main()
{
    int n,k;
    fin >> n >> k;
    int suma_2=0;
    int max_val=0;
    for(int i=0;i<n;i++){
        fin >> v[i];
        suma_2+=v[i];
        max_val=max(max_val,v[i]);
    }
    int c;
    int lf=max_val;
    int rg=suma_2;
    while(lf<=rg){
        int mid=(rg+lf)/2;
        int nrsume=merg(n,mid);
        if(nrsume<=k) {
            rg=mid-1;
            c=mid;
        } 
        else
            lf=mid+1;
    }
    fout << c << " ";
//    int mid=9;
//    fout << merg(n,mid);
    return 0;
}