Cod sursa(job #3316031)

Utilizator Vicentiu123Savu Vicentiu Dorian Vicentiu123 Data 16 octombrie 2025 22:41:03
Problema Transport Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <iostream>
#include <fstream>
using namespace std;
int v[16001];
int transport(int x, int n){
    int i, s=0, k=0;
    for(i=0;i<n;i++){
        if(v[i]+s<=x){
            s+=v[i];
        }
        else{
            s=v[i];
            k++;
            k+=(i==n-1);
        }
    }
    return k;
}
int main()
{
    ifstream fin("transport.in");
    ofstream fout("transport.out");
    int i, n, k, st=0, dr=0, mij, x;
    fin>>n>>k;
    for(i=0;i<n;i++){
        fin>>v[i];
        st=max(st,v[i])-1;
        dr+=v[i];
    }
    dr++;
    while(st+1<dr){
        mij=(st+dr)/2;
        x=transport(mij,n);
        cout<<x<<' '<<mij<<' '<<st<<' '<<dr<<'\n';
        if(x<=k){
            dr=mij;
        }
        else{
            st=mij;
        }
    }
    fout<<dr<<'\n';
    return 0;
}