Cod sursa(job #2168813)

Utilizator stefanbrb10Barbu Stefan stefanbrb10 Data 14 martie 2018 12:24:20
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <bits/stdc++.h>
#define nrmax 16002
#define INF 0x3f3f3f3f
using namespace std;
ifstream input("transport.in");
ofstream print("transport.out");
int V[nrmax],n,k;

int capacitate(int x){
    int s=0,ret=0;
    for(int i=1;i<=n;++i){
            if(V[i]>x)return INF;
            else if(s+V[i]<=x)
                s+=V[i];
            else if(s+V[i]>x){
                ++ret;
                s=V[i];
            }
    }
    if(s<=x)++ret;
    return ret;
}

int main(){
    int st=1,dr=0,mij,ans=16000;
    input>>n>>k;
    for(int i=1;i<=n;++i){
            input>>V[i];
            dr+=V[i];
    }
    while(st<=dr){
        mij=(st+dr)/2;
    if(capacitate(mij)<=k){
            ans=mij;
            dr=mij-1;
    }
    else st=mij+1;
    }
print<<ans;
return 0;
}