제출 #944613

#제출 시각아이디문제언어결과실행 시간메모리
944613pccExamination (JOI19_examination)C++17
100 / 100
1567 ms228248 KiB
#include <bits/stdc++.h>
#include <bits/extc++.h>
using namespace __gnu_pbds;
using namespace std;

#define ll long long
#define pll pair<ll,ll>
#define pii pair<int,int>
#define fs first
#define sc second
#define tlll tuple<ll,ll,ll>

struct D{
	int x,y,id;
	D(){}
	D(int xx,int yy,int ii){
		x = xx,y = yy,id = ii;
	}
	bool operator<(D b)const{
		return (x+y==b.x+b.y?id>b.id:x+y<b.x+b.y);
	}
};

const int inf = 1e9;
const int mxn = 2e5+10;
vector<int> allx,ally;
vector<D> req;
int N,Q;
int ans[mxn];
pii range[mxn];
gp_hash_table<int,int> bit[mxn];

int getval(int x,int y){
	x = mxn-x-1,y = mxn-y-1;
	int re = 0;
	for(int tx = x;tx>0;tx-=tx&-tx){
		for(int ty = y;ty>0;ty -= ty&-ty){
			if(bit[tx].find(ty) == bit[tx].end())continue;
			re += bit[tx][ty];
		}
	}
	return re;
}
void modify(int x,int y){
	x = mxn-1-x,y = mxn-1-y;
	for(int i = x;i<mxn;i+=i&-i){
		for(int j = y;j<mxn;j+=j&-j)bit[i][j]++;
	}
	return;
}

int main(){
	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	cin>>N>>Q;
	allx.push_back(-inf);
	ally.push_back(-inf);
	for(int i = 0;i<N;i++){
		int x,y;
		cin>>x>>y;
		req.push_back(D(x,y,-1));
		allx.push_back(x);
		ally.push_back(y);
	}
	for(int i = 1;i<=Q;i++){
		int a,b,c;
		cin>>a>>b>>c;
		range[i] = {a,b};
		allx.push_back(a);
		ally.push_back(b);
		req.push_back(D(c,0,i));
	}
#define _all(T) T.begin(),T.end()
	sort(_all(allx));allx.erase(unique(_all(allx)),allx.end());
	sort(_all(ally));ally.erase(unique(_all(ally)),ally.end());
	sort(req.begin(),req.end());
	for(auto it = req.rbegin();it != req.rend();it++){
		int x,y;
		if(it->id != -1){
			x = range[it->id].fs,y = range[it->id].sc;
		}
		else x = it->x,y = it->y;
		x = lower_bound(_all(allx),x)-allx.begin();
		y = lower_bound(_all(ally),y)-ally.begin();
		if(it->id != -1)ans[it->id] = getval(x,y);
		else modify(x,y);
	}
	for(int i = 1;i<=Q;i++){
		cout<<ans[i]<<'\n';
	}
	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...