Cod sursa(job #3360471)

Utilizator Mark.DoarnaMark Doarna Mark.Doarna Data 14 iulie 2026 12:25:09
Problema Transport Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
int v[16000];
int drumuri(int v[],int n,int x){
    int i=0, s=0, drum=1;
    for(i=0;i<n;i++){
        s+=v[i];
        if(s+v[i+1]>x){
            s=0;
            drum++;
        }
    }
    return drum;
}
int main()
{
    int x, n, i, st, dr, mij, maxi=0;
    in>>n>>x;
    for(i=0;i<n;i++){
        in>>v[i];
        if(v[i]>maxi){
            maxi=v[i];
        }
    }
    st=maxi;
    dr=16000;
    while(st<dr-1){
        mij=(st+dr)/2;
        if(drumuri(v,n,mij)>x){
            st=mij;
        }else{
            dr=mij;
        }
    }
    out<<dr;
    return 0;
}