Cod sursa(job #3256140)

Utilizator Costy2345Costi Dimian Costy2345 Data 13 noiembrie 2024 16:50:59
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
const int NMAX=16*1e3+2;
int v[NMAX];
int n,k;
int main()
{
    fin>>n;
    fin>>k;
    int minim=INT_MAX,capmax=0,capmin=-1;

    for(int i=1;i<=n;i++){
        fin>>v[i];
        capmax+=v[i];
        capmin=max(capmin,v[i]);
    }
    //fout<<capmax<<" "<<capmin<<endl;
    int st=capmin,dr=capmax,mij,l=1;
    //fout<<"st="<<st<<" dr="<<dr<<endl;
    while(st<=dr){
        int nr=1,s=0;
        mij=(st+dr)/2;
        for(int i=1;i<=n;i++){
            s+=v[i];
            //fout<<s<<" "<<nr<<" i="<<i<<endl;
            if(s>mij){
                nr++;
                s=0;
                i--;//7 10 12 15
            }
        }
        if(nr<=k){
            dr=mij-1;
            minim=min(mij,minim);
        }
        else if(nr>k){
            st=mij+1;
        }
        //fout<<"nr="<<nr<<" minim="<<minim<<endl;
        //fout<<"st="<<st<<" dr="<<dr<<" mij="<<mij<<endl;
    }
    fout<<minim;
    return 0;
}