This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll maxn = 100000;
void build(ll tl, ll tr, ll v, multiset<ll> t[]){
multiset<ll> temp;
if (tl==tr){
t[v] = temp;
}
else{
t[v] = temp;
ll tm = (tl+tr)>>1;
build(tl,tm,v*2,t);
build(tm+1,tr,v*2+1,t);
}
}
ll query(ll v, ll tl, ll tr, ll l, ll r,multiset<ll> t[], ll c){
if (tr<l||tl>r) return 0;
if (tl>=l&&tr<=r){
return t[v].size()-distance(t[v].begin(),t[v].lower_bound(c));
}
ll tm = (tl+tr)>>1;
return query(v*2,tl,tm,l,r,t,c)+query(v*2+1,tm+1,tr,l,r,t,c);
}
void update(ll v, ll tl, ll tr, ll l, ll x, multiset<ll> t[]){
t[v].insert(x);
ll tm = (tl+tr)>>1;
if (l<=tm) {
if (tl==tr) return;
else update(v*2,tl,tm,l,x,t);
}
else update(v*2+1,tm+1,tr,l,x,t);
}
int main(){
ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
ll n;
cin >> n;
ll q;
cin >> q;
vector<pair<ll,pair<ll,ll>>> aa;
for (int i=0;i<n;i++){
ll s,t;
cin >> s >> t;
aa.push_back({s,{t,s+t}});
}
sort(aa.begin(),aa.end());
multiset<ll> t[n*4];
build(0,n-1,1,t);
priority_queue<pair<pair<ll,ll>,pair<ll,ll>>> pq;
for (int i=0;i<aa.size();i++){
pq.push({{aa[i].second.first,i},{aa[i].first,aa[i].second.second}});
}
vector<pair<pair<ll,ll>,pair<ll,ll>>> aaa;
ll cont = 0;
ll ans[q+5];
ll q2 = q;
while (q--){
ll x,y,z;
cin >> x >> y >> z;
aaa.push_back({{y,cont},{x,z}});
cont++;
}
sort(aaa.begin(),aaa.end());
for (int i=aaa.size()-1;i>=0;i--){
ll x = aaa[i].second.first;
ll z = aaa[i].second.second;
ll y = aaa[i].first.first;
pair<ll,pair<ll,ll>> temp = {x,{-1,-1}};
ll ind = lower_bound(aa.begin(),aa.end(),temp)-aa.begin();
while (!pq.empty() && pq.top().first.first >= y){
update(1,0,n-1,pq.top().first.second,pq.top().second.second,t);
pq.pop();
}
ans[aaa[i].first.second] = query(1,0,n-1,ind,n-1,t,z);
}
for (int i=0;i<q2;i++){
cout << ans[i] << "\n";
}
}
Compilation message (stderr)
examination.cpp: In function 'int main()':
examination.cpp:57:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<long long int, std::pair<long long int, long long int> > >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
57 | for (int i=0;i<aa.size();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... |