#include<bits/stdc++.h>
using namespace std;
#define int long long
int32_t main(){
int n,m,q; cin>>n>>m>>q;
vector<pair<int,int>> in(m);
vector<int> queries(q);
bool c3 = true;
int sz = 0;
vector<int> szi(m);
for(int i = 0; i < m; i++){
int a,b; cin>>a>>b;
sz += b-a+1;
in[i] = {a-1,b-1};
szi[i] = b-a+1;
if(a != 1) c3 = false;
}
for(int i = 0; i < q; i++){
int s; cin>>s;
queries[i] = s;
}
if(c3){
vector<int> non_with_exactly_i_dis(n,0);
for(int i = 0; i < m-1; i++){
non_with_exactly_i_dis[szi[i]-1] += min(szi[i], szi[i+1]);
}
vector<int> suf(n+1,0);
for(int i = n; i > 0; i--) suf[i-1] = suf[i] + non_with_exactly_i_dis[i-1];
for(int i = 0; i < q; i++){
if(queries[i] >= n){
cout<<0<<'\n';
continue;
}else{
cout<<suf[queries[i]]<<'\n';
}
}
}else{
vector<int> sbs(sz,0);
vector<int> hai(n,-1);
int p = -1;
for(int i = 0; i < m; i++){
for(int cur = in[i].first; cur <= in[i].second; cur++){
++p;
if(hai[cur] == -1){
hai[cur] = p;
}else{
sbs[p - hai[cur] - 1]++;
hai[cur] = p;
}
}
}
vector<int> suf_sbs(sz+1,0);
for(int i = sz; i > 0; i--) suf_sbs[i-1] = suf_sbs[i] + sbs[i-1];
for(int i = 0; i < q; i++){
if(queries[i] >= suf_sbs.size()){
cout<<0<<'\n';
continue;
}
cout<<suf_sbs[queries[i]]<<'\n';
}
}
}
# | 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... |