Cod sursa(job #3152663)

Utilizator deliaandreeaddelia andreea deliaandreead Data 26 septembrie 2023 10:25:56
Problema Transport Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.59 kb
#include <iostream>
#include <fstream>
using namespace std;

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

int v[16005];
 int n,k;

bool verif(int c){
    long long vol=0;
    for(int i=1;i<=n;i++){
        if(k>0){
            if(vol<c){
                vol=vol+v[i];
                if(vol>c){
                    k--;
                    vol=v[i];
                }
                else if(vol==c){
                    k--;
                    vol=0;
                }
            }
            else if(vol>c ){
                k--;
                vol=v[i];
            }
            else if(vol==c){
                k--;
                vol=0;
            }
        }
        else{
            if(vol<c){
                vol=vol+v[i];
                if(vol>c ){
                    return false;
                }
                else if(vol==c && i!=n){
                    return false;
                }
            }
            else if(vol>c ){
                return false;
            }
            else if(vol==c && i!=n){
                    return false;
                }
        }
    }
    return true;
}

int cautbin(int c){
    int st=1;
    int dr= 16005;
    int predc=16005;
    while(st<=dr){
        int c=(st+dr)/2;
        if(verif(c)){
            predc=min(c,predc);
            dr=c-1;
        }
        else {
            st=c+1;
        }

   }
    return predc;
}


int main()
{
    fin>>n>>k;
    for(int i=1;i<=n;i++){
        fin>>v[i];
    }
    fout<<cautbin(c);





    return 0;
}