Language: C++

#include<bits/stdc++.h>
#define ll long long
using namespace std;

int main()
{
    ll N, X;
    cin >> N >> X;
    ll B[N], L[N], U[N];
    for (int i = 0; i < N; i++)
        cin >> B[i] >> L[i] >> U[i];

    ll base = 0;
    for (int i = 0; i < N; i++)
        base -= B[i] * L[i];

    pair<ll, int> full[N];
    for (int i = 0; i < N; i++)
        full[i] = make_pair(L[i] * B[i] + (X - B[i]) * U[i], i);
    sort(full, full + N);
    reverse(full, full + N);
    
    ll cumsum[N];
    cumsum[0] = full[0].first;
    for (int i = 1; i < N; i++)
        cumsum[i] = cumsum[i - 1] + full[i].first;

    ll low = 0, high = X*N;
    while (low != high)
    {
        ll total = base;
        ll mid = (high + low) / 2;

        // if (mid >= X)
        //     total += cumsum[mid / X - 1];
        
        // ll best = 0;
        // ll resi = mid % X;
        ll best = base;
        for (int i = 0; i < N; i++)
        {
            int num_full = mid / X;
            ll now = base;
            if (i <= num_full - 1)
                now += cumsum[min(num_full, N-1)] - full[i].first;
            else
                now += cumsum[num_full - 1];
            
            int k = full[i].second;
            ll left = mid % X;
            if (left > B[k])
                now += (left - B[k]) * U[k] + B[k] * L[k];
            else
                now += left * L[k];
                
            if (now > best)
                best = now;
        }

        if (best >= 0)
            high = mid;
        else
            low = mid + 1;
    }
    cout << low << endl;
   	return 0;
}

Compiler output:
a.cc: In function 'int main()':
a.cc:45:34: error: no matching function for call to 'min(int&, long long int)'
   45 |                 now += cumsum[min(num_full, N-1)] - full[i].first;
      |                               ~~~^~~~~~~~~~~~~~~
In file included from /usr/include/c++/14/algorithm:60,
                 from /usr/include/x86_64-linux-gnu/c++/14/bits/stdc++.h:51,
                 from a.cc:1:
/usr/include/c++/14/bits/stl_algobase.h:233:5: note: candidate: 'template<class _Tp> constexpr const _Tp& std::min(const _Tp&, const _Tp&)'
  233 |     min(const _Tp& __a, const _Tp& __b)
      |     ^~~
/usr/include/c++/14/bits/stl_algobase.h:233:5: note:   template argument deduction/substitution failed:
a.cc:45:34: note:   deduced conflicting types for parameter 'const _Tp' ('int' and 'long long int')
   45 |                 now += cumsum[min(num_full, N-1)] - full[i].first;
      |                               ~~~^~~~~~~~~~~~~~~
/usr/include/c++/14/bits/stl_algobase.h:281:5: note: candidate: 'template<class _Tp, class _Compare> constexpr const _Tp& std::min(const _Tp&, const _Tp&, _Compare)'
  281 |     min(const _Tp& __a, const _Tp& __b, _Compare __comp)
      |     ^~~
/usr/include/c++/14/bits/stl_algobase.h:281:5: note:   candidate expects 3 arguments, 2 provided
In file included from /usr/include/c++/14/algorithm:61:
/usr/include/c++/14/bits/stl_algo.h:5686:5: note: candidate: 'template<class _Tp> constexpr _Tp std::min(initializer_list<_Tp>)'
 5686 |     min(initializer_list<_Tp> __l)
      |     ^~~
/usr/include/c++/14/bits/stl_algo.h:5686:5: note:   candidate expects 1 argument, 2 provided
/usr/include/c++/14/bits/stl_algo.h:5696:5: note: candidate: 'template<class _Tp, class _Compare> constexpr _Tp std::min(initializer_list<_Tp>, _Compare)'
 5696 |     min(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
/usr/include/c++/14/bits/stl_algo.h:5696:5: note:   template argument deduction/substitution failed:
a.cc:45:34: note:   mismatched types 'std::initializer_list<_Tp>' and 'int'
   45 |                 now += cumsum[min(num_full, N-1)] - full[i].first;
      |                               ~~~^~~~~~~~~~~~~~~