Cod sursa(job #1605507)

Utilizator radiogard1999Dragoi Andrei radiogard1999 Data 19 februarie 2016 08:49:39
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <bits/stdc++.h>

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

int n,k,a[16005];

inline int Verifica(int m)
{
    int s=0,i,cnt=1;
    for(i=1;i<=n;i++)
    {
        if(a[i]>m) return 0;
        s+=a[i];
        if(s>m)
        {
            cnt++;
            s=a[i];
        }
        if(cnt>k) return 0;
    }
    return 1;
}

void Citire()
{
    int i;
    fin>>n>>k;
    for(i=1;i<=n;i++)
        fin>>a[i];
    fin.close();
}

void CB()
{
    int st,dr,m,aux;
    aux=0;
    st=1;
    dr=1000000000;
    while(st<=dr)
    {
        m=(st+dr)/2;
        if(Verifica(m)==1)
        {
            aux=m;
            dr=m-1;
        }
        else st=m+1;
    }
    fout<<aux<<"\n";
    fout.close();
}

int main()
{
    Citire();
    CB();
    return 0;
}