Cod sursa(job #3261614)

Utilizator Rizi_SanNen Ioana Madlena Rizi_San Data 6 decembrie 2024 22:38:41
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
int a[16001];
int trans(int pana_aci, int n, int v[16001], int k)
{
    int S=0, cnt=1;
    for (int i=1; i<=n; i++)
        if (S+v[i]<=pana_aci)
          S+=v[i];
        else
        {
            S=v[i];
            cnt++;
        }
    if (cnt<=k)
        return 1;
    else
        return 0;
}
int caut_bin(int n, int st, int dr, int v[16001], int k)
{
    int cap;
    while (st<=dr)
    {
        int mij=(st+dr)/2;
        if (trans(mij, n, v, k))
        {
            cap=mij;
            dr=mij-1;
        }
        else
            st=mij+1;
    }
    return cap;
}

int main ()
{
    int n, k, S=0, max=0, cap;
    f>>n>>k;
    for (int i=1; i<=n; i++)
    {
        f>>a[i];
        if (max<a[i])
            max=a[i];
        S+=a[i];
    }
    g<<caut_bin(n, max, S, a, k);
    f.close();
    g.close();
    return 0;
}