Cod sursa(job #3328335)

Utilizator InformaticianInDevenire1Munteanu Mihnea Gabriel InformaticianInDevenire1 Data 7 decembrie 2025 19:58:09
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <bits/stdc++.h>
#define int long long

using namespace std;

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

int v[16061];
int n,k;

int Functie(int C){
    int ans = 0;
    int sum = 0;
    for (int i=1;i<=n;++i){
        if (v[i]>C) return 1e9;
        if (sum+v[i]<=C) sum += v[i];
        else{
            ans++;
            sum = v[i];
        }
    }
    if (sum!=0) ans++;
    return ans;
}

int CautBin_cu_pas(){ // cel mai mare C astfel incat sa ia mai mult de k costuri
    int ans = 0;
    for (int pas=(1LL<<60);pas>0;pas/=2){
        int M = ans+pas; // M de la caut bin obisnuita ("Mijlocul")
        int loc = Functie(M);
        if (loc>k) ans += pas;
    }
    return ans;
}

signed main()
{
    fin >> n >> k;
    for (int i=1;i<=n;++i){
        fin >> v[i];
    }
    fout << CautBin_cu_pas()+1; // ca sa am C min care e bun
    return 0;
}