Cod sursa(job #2749664)

Utilizator RazvanLazar2004Lazar Razvan Gabriel RazvanLazar2004 Data 7 mai 2021 18:07:57
Problema Transport Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.03 kb
#include<fstream>
using namespace std;
long long int v[16000],s[16000];
int main(){
    ifstream in("transport.in");
    ofstream out("transport.out");
    long long int n,k,m=0;
    in>>n>>k;
    s[0]=0;
    for(long long int i=1;i<=n;i++){
        in>>v[i];
        if(m<v[i]){
            m=v[i];
        }
        s[i]=s[i-1]+v[i];
    }
    long long int stanga=m,dreapta=s[n],capacitate;
    while(stanga<dreapta){
        long long int mijloc=(stanga+dreapta)/2,numar=0,x;
        x=mijloc;
        for(long long int i=1;i<=n;i++){
            for(long long int j=1;j<=n;j++){
                if(s[j]>x){
                    numar++;
                    i=j;
                    x=s[j-1]+mijloc;
                    break;
                }
            }
        }
        numar++;
        if(numar<=k){
            capacitate=mijloc;
            dreapta=mijloc;
        }else{
            stanga=mijloc;
        }
        if(mijloc==stanga){
            break;
        }
    }
    out<<capacitate;
}