Cod sursa(job #951615)

Utilizator classiusCobuz Andrei classius Data 21 mai 2013 01:47:41
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <fstream>
#include <vector>
#include <algorithm>

using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");

int trs(int,int,int,vector<int>&);

int main()
{
    int n,k;
    vector<int> v;

    f>>n>>k;
    for(int i=0;i<n;i++){
        int x;
        f>>x;
        v.push_back(x);
    }

    int mx=0;
    while(!(trs(n,mx+1,k,v)&&!trs(n,mx,k,v))){
        int ax=1;
        while(!trs(n,mx+ax,k,v))
            ax*=2;
        mx+=ax/2;
    }
    g<<mx+1;

    return 0;
}

int trs(int n,int mx,int k,vector<int>& v)
{
    int nr=0,cn=0;
    for(int i=0;i<n;++i){
        if(v[i]>mx)
            return 0;
        if(cn+v[i]<=mx)
            cn+=v[i];
        else{
            nr++;
            cn=v[i];
        }
    }
    if(nr<k)
        return 1;
    else
        return 0;
}