#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |