Cod sursa(job #2069509)

Utilizator ScarymovieMocanu Alexandru Scarymovie Data 18 noiembrie 2017 15:19:18
Problema Transport Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <iostream>
#include<bits/stdc++.h>
using namespace std;
int n,k;
vector<int> v;
int NrTransporturi(int x)
{
    int i=0,NrTransp=1,Ocupare=0;
    while(i<n)
    {
        if(Ocupare+v[i]<=x) {Ocupare+=v[i];++i;continue;}
        Ocupare=v[i];
        NrTransp++;
        i++;
    }
    return NrTransp;
}
int cautbin(int left,int right,int val)
{
    int st=left,dr=right,LastApp=-1;
    while(st<=dr)
        {
            int mij=(dr-st)/2+st;
            int fct=NrTransporturi(mij);
            if(fct<val){dr=mij-1;continue;}
            if(fct>val){st=mij+1;continue;}
            LastApp=mij;
            dr=mij-1;
        }
    return LastApp;
}
int main()
{
    ifstream f("transport.in");
    ofstream g("transport.out");
    f>>n>>k;int i;
    v.resize(n);int suma=0,maxim=0;
    for(i=0;i<n;++i) {f>>v[i];suma+=v[i];maxim=max(maxim,v[i]);}
    g<<cautbin(maxim,suma,k);
    return 0;
}