Cod sursa(job #3302431)

Utilizator novak1snovac luca novak1s Data 7 iulie 2025 14:58:58
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <bits/stdc++.h>
using namespace std;

const int NMAX=16e3;
int n,k,d;
long long int a[NMAX+1];
long long int v[NMAX+1];
bool check (int x)
{
    int nr=1;
    int nx=x;
    int t;
    for( int i=1;i<=n;i++)
    {
        if(nx>=a[i])
        {
            nx-=a[i];
        }
        else
        {
            nr++;
            nx=x-a[i];
        }

    }
    if(nr<=k)return 1;
    else return 0;
}
int main()
{
    ifstream cin ("transport.in");
    ofstream cout ("transport.out");
    int st=0;
    cin >>n >> k;
    for(int i=1;i<=n;i++)
    {
        cin >> a[i];
        if(a[i]>st)
        {
            st=a[i];
        }
        d+=a[i];

    }

    int dr=d;
    int sol=0;
    while ( st<=dr)
    {
        int mid=(st+dr)/2;
        if(check(mid)==1){sol=mid; dr= mid-1;
        }
        else {
            st=mid+1;
        }
    }
    cout <<sol;





    return 0;
}