Cod sursa(job #483768)

Utilizator R.A.RFMI Romila Remus Arthur R.A.R Data 9 septembrie 2010 23:51:48
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <fstream>

using namespace std;

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

int N,K,V[16005];

inline bool verifica(int val)
{
    int k=K,s=0;
    for(int i=1;i<=N;)
    {
        if(val<V[i])return 0;
        while(s+V[i]<=val&&i<=N)
            s+=V[i++];
        s=0;
        k--;
    }
    if(k>=0)return 1;
    return 0;
}

int main()
{
    int i,S=0,st,dr,vmax=-1,m;
    in>>N>>K;
    for(i=1;i<=N;i++)
    {
        in>>V[i],S+=V[i];if(V[i]>vmax)vmax=V[i];}
    //caut intra vmax si S;
    st = vmax,dr=S;
    while(st<=dr)
    {
        m=(st+dr)/2;
        if(verifica(m))
            dr=m-1;
        else st=m+1;
    }
    out<<st;
    return 0;
}