Cod sursa(job #2972469)

Utilizator nicholas9onicaOnica Nicholas Andrei nicholas9onica Data 29 ianuarie 2023 15:54:41
Problema Transport Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <iostream>
#include<fstream>

using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int v[16001];
bool functie(int m,int k,int v[],int n)
{
    int i,sum=0,nr=1;
    for(i=1; i<=n; i++)
    {
        sum+=v[i];
        if(sum>m)
        {
            nr++;
            sum=v[i];
        }
    }
    if(nr<=k)
        return true;
    else
        return false;

}

int main()
{
    int n,k,dr=16000,ultim=-1,mid,maxn=-1;
    fin>>n>>k;
    for(int i=1; i<=n; i++)
    {
        fin>>v[i];
        if(v[i]>maxn)
            maxn=v[i];
    }
    int st=maxn;
    while(st<=dr)
    {
        mid=(st+dr)/2;
        if(functie(mid,k,v,n)==true)
        {
            dr=mid-1;
            ultim=mid;
        }
        else
        {
            st=mid+1;
        }
    }
    fout<<ultim;
}