Cod sursa(job #3191857)

Utilizator AlexandruCorneaCornea Alexandru Mihai AlexandruCornea Data 10 ianuarie 2024 19:48:22
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin ("transport.in");
ofstream fout ("transport.out");
int x[500001];
int vf(int x[],long long a,int t,int m)
{
    long long cnt=0,sum=0;
    for (int i=1; i<=m; i++)
    {
        sum=sum+x[i];
        if (sum+x[i+1]>a)
        {
            cnt++;
            sum=0;
        }
        else if (i==m)
            cnt++;
    }
    if (cnt>t)
        return 0;
    return 1;
}
int main()
{
    int maxi=0,n,k,tn;
    long long s=0;
    fin>>n>>k;
    for (int i=1; i<=n; i++)
    {
        fin>>x[i];
        if (x[i]>maxi)
            maxi=x[i];
        s=s+x[i];
    }
    long long st=maxi,dr=s;

    while (st<=dr)
    {
    long long mij=(st+dr)/2;
        if (vf(x,mij,k,n)==1)
        {
            tn=mij;
            dr=mij-1;
        }
        else
            st=mij+1;
    }
    fout<<tn;
    return 0;
}