247872026-02-15 10:33:22CzDaniMI bróker (50 pont)cpp17Forditási hiba
#include <bits/stdc++.h>
using namespace std;

#define int long long

signed main() {
    int n, q;
    cin >> n >> q;
    vector<int> v(n+1);
    for (int i = 1; i <= n; i++) {
        cin >> v[i];
    }
    vector<vector<pair<int, int>>> dpv(501), dpe(501);
    //stat: 1:mar johet a kovi vetel (k feletti reszben vagyunk mar) 0: meg nem jott k-nal magasabb a legutobbi vetel ota
    for (int k = 1; k <= 500; k++) {
        int stat = 1, maxi = 501;
        for (int i = 1; i <= n; i++) {
            if (stat==1&&v[i]<=k) {
                dpv[k].push_back({maxi, -v[i]});
                stat=0;
                maxi=0;
            } else if (stat==1) {
                maxi=max(maxi,v[i]);
            } else if (stat==0&&v[i]>k) {
                maxi=v[i];
                stat=1;
            }
            if (k==40) {
                // cout << i << ": " << stat << ' ' << maxi << endl;
            }
        }
        sort(dpv[k].begin(), dpv[k].end());
        dpv[k].push_back({502, 0});
        int m = dpv[k].size();
        for (int i = m-2; i >= 0; i--) {
            dpv[k][i]={dpv[k][i].first, dpv[k][i].second+dpv[k][i+1].second};
        }
    }
    //stat: 1: mar johet az eladas (szval k alatti reszben voltunk eddig), 0: eddig nem jott knal nagyobb egyenlo
    for (int k = 1; k <= 500; k++) {
        int stat = 0, mini = 501;
        for (int i = 1; i <= n; i++) {
            if (stat==1&&v[i]>=k) {
                dpe[k].push_back({mini, v[i]});
                stat=0;
                mini=501;
            } else if (stat==1) {
                mini=min(mini,v[i]);
            } else if (stat==0&&v[i]<k) {
                mini=v[i];
                stat=1;
            }
            if (k==120) {
                //cout << i << ": " << stat << ' ' << mini << endl;
            }
        }
        dpe[k].push_back({0, 0});
        sort(dpe[k].begin(), dpe[k].end());
        int m = dpe[k].size();
        for (int i = 1; i < m; i++) {
            dpe[k][i] = {dpe[k][i].first, dpe[k][i].second + dpe[k][i-1].second};
        }
    }
    // for (int i = 0; i < dpv[40].size(); i++)cout<<dpv[40][i].first << ' ' << dpv[40][i].second << endl;
    // for (int i = 0; i < dpe[120].size(); i++)cout<<dpe[120][i].first << ' ' << dpe[120][i].second << endl;
    while (q--) {
        int a, b;
        cin >> a >> b;
        auto it = upper_bound(dpe[b].begin(), dpe[b].end(), make_pair(a, 501));
        it--;
        cout << it->second + lower_bound(dpv[a].begin(), dpv[a].end(), make_pair(b, -501))->second << endl;
        // cout << a << ' ' << b << ' ' << lower_bound(dpv[a].begin(), dpv[a].end(), make_pair(b, -502))->second << endl;
    }
}
Forditási hiba
open /var/local/lib/isolate/430/box/a.out: no such file or directory
In file included from /usr/include/c++/12/bits/stl_algobase.h:71,
                 from /usr/include/c++/12/bits/specfun.h:45,
                 from /usr/include/c++/12/cmath:1935,
                 from /usr/include/x86_64-linux-gnu/c++/12/bits/stdc++.h:41,
                 from main.cpp:1:
/usr/include/c++/12/bits/predefined_ops.h: In instantiation of 'bool __gnu_cxx::__ops::_Val_less_iter::operator()(_Value&, _Iterator) const [with _Value = const std::pair<long long int, int>; _Iterator = __gnu_cxx::__normal_iterator<std::pair<long long int, long long int>*, std::vector<std::pair<long long int, long long int> > >]':
/usr/include/c++/12/bits/stl_algo.h:2024:14:   required from '_ForwardIterator std::__upper_bound(_ForwardIterator, _ForwardIterator, const _Tp&, _Compare) [with _ForwardIterator = __gnu_cxx::__normal_iterator<pair<long long int, long long int>*, vector<pair<long long int, long long int> > >; _Tp = pair<long long int, int>; _Compare = __gnu_cxx::__ops::_Val_less_iter]'
/usr/include/c++/12/bits/stl_algo.h:2059:32:   required from '_FIter std::upper_bound(_FIter, _FIter, const _Tp&) [with _FIter = __gnu_cxx::__normal_iterator<pair<long long int, long long int>*, vector<pair<long long int, long long int> > >; _Tp = pair<long long int, int>]'
main.cpp:69:30:   required from here
/usr/include/c++/12/bits/predefined_ops.h:98:22: error: no match for 'operator<' (operand types are 'const std::pair<long long int, int>' and 'std::pair<long long int, long long int>')
   98 |       { return __val < *__it; }
      |                ~~~~~~^~~~~~~
In file included from /usr/include/c++/12/bits/stl_algobase.h:67:
/usr/include/c++/12/bits/stl_iterator.h:1246:5: note: candidate: 'template<class _IteratorL, class _IteratorR, class _Container> bool __gnu_cxx::operator<(const __normal_iterator<_IteratorL, _Container>&, const __normal_iterator<_IteratorR, _Container>&)'
 1246 |     operator<(const __normal_iterator<_IteratorL, _Container>& __lhs,
      ...