Cod sursa(job #1536687)

Utilizator OFY4Ahmed Hamza Aydin OFY4 Data 26 noiembrie 2015 15:34:01
Problema Transport Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include<cstdio>
#include<algorithm>
using namespace std;

int n,k,v[1605],minim=0,st,dr,mij,temp,solutie,maxim;

int main(){

    freopen("transport.in", "r", stdin);
    freopen("transport.out", "w", stdout);

    scanf("%d %d", &n, &k);

    for(int i=1;i<=n;++i){

        scanf("%d", v[i]);
        minim=max(minim, v[i]);
        maxim+=v[i];
    }

    st=minim;dr=maxim;

    while(st<=dr){

        mij=(dr+st)/2;

        int suma=0;
        temp=1;
        for(int i=1;i<=n;++i){

            if(suma+v[i]<=mij){

                suma+=v[i];
            }
            else{

                suma=v[i];
                ++temp;
            }
        }

        if(k>=temp){

            solutie=mij;
        }
        else{

            st=mij-1;
        }
    }

    printf("%d", solutie);
}