제출 #1189328

#제출 시각아이디문제언어결과실행 시간메모리
1189328ezzzayExamination (JOI19_examination)C++20
0 / 100
3092 ms13384 KiB
#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;
    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);
            i--;
        }
        ans[id]= find(N)-find(b-1);
    }
    for(int i=0;i<q;i++)cout<<ans[i]<<endl;;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...