Cod sursa(job #1259700)

Utilizator VladTiberiuMihailescu Vlad Tiberiu VladTiberiu Data 10 noiembrie 2014 14:00:22
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
long long n,k,i,a[16600],poz,mx,s;
long long trans(long long x){
    int s=0,t=1,r=0,i=1;
    while(i<=n){
        s = x;
        if(a[i] <= s){
            while(a[i] <= s){
                s = s - a[i];
                i++;
            }
            r++;
        }
    }
    if(r <= k) return 1;
    return 0;
}
int caut(int st,int dr)
{
    int mij,sol;
    while (st<=dr)
    {
        mij=(st+dr)/2;
        if (trans(mij))
        {
            sol=mij;
            dr=mij-1;
        }
        else
        st=mij+1;
    }
    return sol;
}
int main()
{
    f >> n >> k;
    for(i = 1; i <= n; i++){
        f >> a[i];
        if(a[i] > mx) mx = a[i];
        s += a[i];
    }
    g<<caut(mx,s);
    return 0;
}