#include<bits/stdc++.h>
using namespace std;
#define int long long
#define ff first
#define ss second
#define pb push_back
const int N=2e5+5;
pair<int,int> scr[N];
int ans[N];
int bit[N];
void update(int idx, int val){
while(idx<N){
bit[idx]+=val;
idx+= idx & -idx;
}
}
int find(int idx){
if(idx<=0)return 0;
int s=0;
while(idx>0){
s+=bit[idx];
idx-= idx & -idx;
}
return s;
}
signed main(){
int n,q;
cin>>n>>q;
vector< vector<int>> pnt, qr;
for(int i=1;i<=n;i++){
int a,b;
cin>>a>>b;
pnt.pb({a,b});
}
vector<vector<int>>v;
for(int i=0;i<q;i++){
int a,b,c;
cin>>a>>b>>c;
qr.pb({a,b,i});
}
sort(qr.begin(),qr.end());
reverse(qr.begin(),qr.end());
sort(pnt.begin(),pnt.end());
int i=n-1;
int k=0;
for(auto p:qr){
int a=p[0],b=p[1],id=p[2];
while(i>=0 and pnt[i][0]>=a){
update(pnt[i][1],1);
k++;
i--;
}
ans[id]= k-find(b-1);
}
for(int i=0;i<q;i++)cout<<ans[i]<<endl;;
}
# | 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... |