#include <bits/stdc++.h>
using namespace std;
#define int long long
#define pii pair<int,int>
#define fi first
#define se second
const int N = 2e5+5;
int n,m,q,l,r,ans[N];
map<int,int>mp;
set<tuple<int,int,int>>st;
vector<pii>loj;
pii qr[N];
signed main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cin >> n >> m >> q;
int sum = 0;
for(int i = 1; i <= m; i++){
cin >> l >> r;
if(st.empty()){
st.insert({l,r,sum});
sum += r-l+1;
continue;
}
auto x = st.lower_bound({l,-1,-1});
if(x != st.begin()) --x;
vector<tuple<int,int,int,int>>dm;
while(x != st.end()){
auto [l1,r1,t] = *x;
if(r < l1) break;
if(r1 < l){
++x;
continue;
}
if(l <= l1 && r1 <= r){
int vc = sum+l1-l+1;
mp[vc-t-2] += r1-l1+1;
dm.push_back({l1,r1,t,-1});
++x;
}
else if(l <= l1 && r < r1){
int vc = sum+l1-l+1;
dm.push_back({l1,r1,t,-1});
mp[vc-t-2] += r-l1+1;
dm.push_back({r+1,r1,t+r-l1+1,1});
break;
}
else if(l1 < l && r1 <= r){
int vc = t+l-l1;
dm.push_back({l1,r1,t,-1});
dm.push_back({l1,l-1,t,1});
mp[sum-vc-1] += r1-l+1;
++x;
}
else{
int vc = t+l-l1;
mp[sum-vc-1] += r-l+1;
dm.push_back({l1,r1,t,-1});
dm.push_back({l1,l-1,t,1});
dm.push_back({r+1,r1,t+(r+1)-l1,1});
break;
}
}
st.insert({l,r,sum});
sum += r-l+1;
for(auto[l1,r1,t,type]: dm){
if(type == 1) st.insert({l1,r1,t});
else st.erase({l1,r1,t});
}
}
sum = 0;
for(auto it = mp.rbegin(); it != mp.rend(); ++it){
mp[it->fi] += sum;
sum = it->se;
}
for(auto it: mp) loj.push_back(it);
loj.push_back({1e17,0});
loj.push_back({1e18,0});
int ptr = 0;
for(int i = 1; i <= q; i++){
cin >> qr[i].fi;
qr[i].se = i;
}
sort(qr+1,qr+q+1);
for(int i = 1; i <= q; i++){
while(qr[i].fi > loj[ptr].fi) ptr++;
ans[qr[i].se] = loj[ptr].se;
}
for(int i = 1; i <= q; i++) cout << ans[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... |