Submission #1279445

#TimeUsernameProblemLanguageResultExecution timeMemory
1279445hynmjInspections (NOI23_inspections)C++20
0 / 100
1 ms572 KiB
#include <bits/stdc++.h>
#define int long long
using namespace std;
const long long N = 3e3 + 5;
int a[1500 * N];
int l[N];
int r[N];
int last[N];
vector<int> distances[N];
void solve()
{
    int n, m, q;
    cin >> n >> m >> q;
    int j = 1;
    for (int i = 0; i < m; i++)
    {
        cin >> l[i] >> r[i];
        // cout << l[i] << " " << r[i] << endl;
        for (int k = l[i]; k <= r[i]; k++, j++)
        {
            a[j] = k;
        }
        // for (int i = 0; i < 10; i++)
        // {
        //     cout << a[i] << " ";
        // }
        // cout << endl;
    }
    for (int i = 0; i < j; i++)
    {
        // cout << a[i] << " ";
        if (last[a[i]] != 0)
        {
            distances[a[i]].push_back(i - last[a[i]]);
        }
        last[a[i]] = i;
    }
    // cout << endl;
    for (int i = 0; i < n; i++)
    {
        // cout << " i  = " << i << endl;
        if (distances[i].size() > 2)
        {
            sort(distances[i].begin(), distances[i].end());
        }
        // if (distances[i].size())
        // {
        // cout << distances[i].size() << endl;
    }
    // for (int j : distances[3])
    // {
    //     cout << j << " ";
    // }
    // // }
    // cout << endl;

    int e;
    for (int i = 0; i < q; i++)
    {
        cin >> e;
        int ans = 0;
        for (int i = 1; i < n; i++)
        {
            // cout << i << " " << ans << " " << e << endl;
            // cout << distances[i].size() << " " << max(0ll, (int)(lower_bound(distances[i].begin(), distances[i].end(), e) - distances[i].begin())) << endl;
            ans += distances[i].size() - max(0ll, (int)(upper_bound(distances[i].begin(), distances[i].end(), e) - distances[i].begin()));
        }
        cout << ans << endl;
    }
}

signed main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(NULL);
    cout.tie(NULL);
    int t = 1;
    // cin >> t;
    for (int i = 1; i <= t; i++)
    {
        // cout << "Case #" << i << ':' << ' ';
        solve();
        cout << endl;
    }
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...