#include<bits/stdc++.h>
#define ll long long
#define pii pair<int,int>
#define pll pair<ll,ll>
#define plx pair<ll,int>
#define f first
#define s second
#define pb push_back
#define all(x) x.begin(),x.end()
#define vi vector<int>
#define vvi vector<vi>
#define pp pair<ll,int>
#define ub(x,i) upper_bound(all(x),i)-x.begin()
#define lb(x,i) lower_bound(all(x),i)-x.begin()
using namespace std;
const int mxn=2e5+5,inf=1e9+7;
vector<pii>g[mxn];
multiset<pii>ms[2];
ll s[mxn];
ll fw[mxn]{0};
void add(int i,ll amt){
for(;i<mxn;i+=i&-i)fw[i]+=amt;
}
ll qr(int i,ll rs=0){
for(;i;i-=i&-i)rs+=fw[i];
return rs;
}
vector<ll>v;
int main(){
ios_base::sync_with_stdio(0);cin.tie(0);
int n,m,q;cin>>n>>m>>q;ll sum=0;
for(int i=1;i<=m;i++){
int l,r;cin>>l>>r;
g[l].pb({i,sum-l+1});
g[r+1].pb({-i,sum-l+1});
sum+=r-l+1;
}for(int i=1;i<=q;i++)cin>>s[i],s[i]++,v.pb(s[i]);sort(all(v));v.erase(unique(all(v)),v.end());
for(int j=1;j<=n;j++){
for(auto [i,w] : g[j]){
if(i>0){
ms[0].insert({i,w});
auto it=ms[0].lower_bound({i,w});
if(it!=ms[0].begin()&&it!=(--ms[0].end())){
it--;auto il=it;it++;
it++;auto ir=it;it--;ll x=ir->s-il->s;
ms[1].erase({il->f,x});
add(1,-(n-j+1));
add(ub(v,x)+1,n-j+1);
}
if(it!=ms[0].begin()){
it--;auto ij=it;it++;ll x=it->s-ij->s;
ms[1].insert({ij->f,x});
add(1,n-j+1);
add(ub(v,x)+1,-(n-j+1));
}
if(it!=(--ms[0].end())){
it++;auto ij=it;it--;ll x=ij->s-it->s;
ms[1].insert({it->f,x});
add(1,n-j+1);
add(ub(v,x)+1,-(n-j+1));
}
}
else {
i=-i;
auto it=ms[0].lower_bound({i,w});
if(it!=ms[0].begin()&&it!=(--ms[0].end())){
it--;auto il=it;it++;
it++;auto ir=it;it--;ll x=ir->s-il->s;
ms[1].insert({il->f,x});
add(1,(n-j+1));
add(ub(v,x)+1,-(n-j+1));
}
if(it!=ms[0].begin()){
it--;auto ij=it;it++;ll x=it->s-ij->s;
ms[1].erase({ij->f,x});
add(1,-(n-j+1));
add(ub(v,x)+1,(n-j+1));
}
if(it!=(--ms[0].end())){
it++;auto ij=it;it--;ll x=ij->s-it->s;
ms[1].erase({it->f,x});
add(1,-(n-j+1));
add(ub(v,x)+1,(n-j+1));
}ms[0].erase({i,w});
}
}
}for(int i=1;i<=q;i++)cout<<qr(ub(v,s[i]))<<' ';
}
# | 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... |