#55398: C++解法


william000000000 (unknown)


    #include <iostream>
    #include <vector>
    #include <algorithm>

    using namespace std;

    int main()
    {
        long long int n, m;
        cin >> n >> m;

        vector<long long> arr(n);
        vector<long long> s(m);
        vector<long long> e(m);

        for (long long i = 0; i < n; i++) {
            cin >> arr[i];
        }
        for (long long i = 0; i < m; i++) {
            cin >> s[i] >> e[i];
        }

        sort(s.begin(), s.end());
        sort(e.begin(), e.end());

        long long total_show = 0;

        for (long long i = 0; i < n; i++) {
            long long started = upper_bound(s.begin(), s.end(), arr[i]) - s.begin();
            long long ended = lower_bound(e.begin(), e.end(), arr[i]) - e.begin();

            total_show += started - ended;
        }

        cout << total_show;

        return 0;
    }