Cod sursa(job #3260932)

Utilizator Rose_MaryTrandafir Maria Rose_Mary Data 4 decembrie 2024 08:45:04
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream f("transport.in");
ofstream g("transport.out");

int n,k,v[16001];

bool verif(int x)
{
    int i,s=0,cnt=0;
    for(i=1;i<=n;i++)
    {
        if(s+v[i]<=x)
        {
            s+=v[i];
        }else{
            s=v[i];
            cnt++;
        }
    }
    if(cnt+1<=k) return 0;
    return 1;
}

int cautbin(int stanga, int dreapta)
{
    int m,pos;
    while(stanga<=dreapta)
    {
        m=(stanga+dreapta)/2;
        if(verif(m)==0)
        {
            pos=m;
            dreapta=m-1;
        }else stanga=m+1;
    }
    return pos;
}

int main()
{
    int i,s=0,maxi=0;
    f>>n>>k;
    for(i=1;i<=n;i++)
    {
        f>>v[i];
        s+=v[i];
        if(v[i]>maxi) maxi=v[i];
    }
    g<<cautbin(maxi,s);

    f.close();
    g.close();
    return 0;
}