Cod sursa(job #2257062)

Utilizator szili_martonMarton Szilard szili_marton Data 9 octombrie 2018 16:31:09
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <iostream>
#include <fstream>

using namespace std;

int n, k, t[16001];

int szim(int meret)
{
    int i, c=0, fuvar=1;
    for(i=0; i<n; i++)
    {
        if(meret>=c+t[i])c+=t[i];
        else
        {
            fuvar++;
            c=t[i];
        }
    }
    if(fuvar>k)return 1;
    else return 0;
}

int binker(int a, int b, int x)
{
    if(a==b)return a;
    int p=(a+b)/2;
    if(szim(p)) return binker(p+1,b,x);
    else return binker(a,p,x);
}

int main()
{
    ifstream in("transport.in");
    ofstream out("transport.out");

    int i, meret=0, ossz=0;
    in>>n>>k;
    for(i=0; i<n; i++)
    {
        in>>t[i];
        ossz+=t[i];
        if(t[i]>meret)meret=t[i];
    }
    out<<binker(meret,ossz,(meret+ossz)/2);
    return 0;
}