Cod sursa(job #2071491)

Utilizator FunnyStockyMihnea Andreescu FunnyStocky Data 20 noiembrie 2017 18:36:45
Problema Transport Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <fstream>
using namespace std;
ifstream cin("transport.in");
ofstream cout("transport.out");
#define ll long long
#define nm 16005
int v[nm],n,k,r,pas;
static inline int f(int x){
    int num=0,y=0;
    for(int i=1;i<=n;i++){
        if(v[i]>y){
            num++;
            y=x;
        }
        if(v[i]>y)
            return 0;
        y-=v[i];
    }
    if(num<=k)
        return 1;
    return 0;
}
int main()
{
    cin>>n>>k;
    v[n+1]=1e9;
    for(int i=1;i<=n;i++)
        cin>>v[i];
    pas=1<<13;
    r=0;
    while(pas){
        if(!f(pas+r))
            r+=pas;
        pas/=2;
    }
    cout<<r+1;
    return 0;
}