Cod sursa(job #2454336)

Utilizator DBogdan23Dumitru Bogdan Mihai DBogdan23 Data 7 septembrie 2019 22:49:35
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <bits/stdc++.h>
using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
long long v[16001];
bool posibil(int total_transport, int capacitate, int transporturi)
{
    int elem=0,i,k;
    for(i=1;i<=transporturi;i++)
    {
        int cap_aux=capacitate;
        while(cap_aux-v[elem]>=0)
        {
            cap_aux-=v[elem];
            total_transport-=v[elem];
            elem++;
        }
    }
    return (total_transport<=0);
}
int caut_bin(int st, int dr, int s, int k)
{
    int mij;
    while(st<dr)
    {
        mij=(st+dr)/2;
        if(posibil(s,mij,k))
            dr=mij;
        else
            st=mij+1;
    }
    return st;
}
int main()
{
    long long i,n,k,maxi=0,trans=0,c;
    in>>n>>k;
    for(i=1;i<=n;i++)
    {
        in>>v[i];
        trans+=v[i];
        maxi=max(maxi,v[i]);
    }
    out<<caut_bin(maxi,trans,trans,k);
    return 0;
}