这道题用到树状数组加上map
#include <bits/stdc++.h>
#define maxn 100005
#define INF 1e9
using namespace std;
struct Node{
int a, t, x;
}num[100005];
map<int, int> m[100005], p;
int T[100005], n;
void Update(int s, int h, int d){
s = p[s];
while(s <= n){
m[s][h] += d;
s += s & -s;
}
}
int Query(int s, int h){
int sum = 0;
s = p[s];
while(s >= 1){
sum += m[s][h];
s -= s & -s;
}
return sum;
}
int main(){
// freopen("in.txt", "r", stdin);
while(cin >> n){
for(int i = 1; i <= n; i++)
m[i].clear();
p.clear();
for(int i = 1; i <= n; i++){
scanf("%d%d%d", &num[i].a, &num[i].t, &num[i].x);
T[i] = num[i].t;
}
sort(T+1, T+1+n);
for(int i = 1; i <= n; i++){
p[T[i]] = i;
}
for(int i = 1; i <= n; i++){
if(num[i].a == 1){
Update(num[i].t, num[i].x, 1);
}
else if(num[i].a == 2){
Update(num[i].t, num[i].x, -1);
}
else{
printf("%d\n", Query(num[i].t, num[i].x));
}
}
}
return 0;
}