我是胡萝啵,喜欢啵啵啵(*  ̄3)(ε ̄ *)

#include<bits/stdc++.h>
using namespace std;
int main(){
    //mp1:按x存所有基地
    //key=x坐标,value=(x,y)
    //用于处理操作c=0,即摧毁x=d这条竖线上的所有基地
    multimap<int,pair<int,int>>mp1;
    //mp2:按y存所有基地
    //key=y坐标,value=(x,y)
    //用于处理操作c=1,即摧毁y=d这条横线上的所有基地
    multimap<int,pair<int,int>>mp2;
    //mp:记录某个坐标当前还剩多少个基地
    //因为同一个坐标理论上可能被输入多次,所以不能只用set判重
    map<pair<int,int>,int>mp;
    int n,m;
    cin>>n>>m;
    int x,y;
    for(int i=1;i<=n;i++){
        cin>>x>>y;
        //把这个基地按x分类存起来
        //之后如果要炸x=x这条线,就能从mp1里找
        mp1.insert({x,{x,y}});
        //把这个基地按y分类存起来
        //之后如果要炸y=y这条线,就能从mp2里找
        mp2.insert({y,{x,y}});
        //记录该坐标基地数量+1
        mp[{x,y}]++;
    }
    while(m--){
        int s,t,ans=0;
        cin>>s>>t;
        //s==0:摧毁直线x=t上的所有基地
        if(s==0){
            //不断在mp1里查找key=t的基地
            //每次find(t)都会找到一个x=t的基地
            while(1){
                auto it=mp1.find(t);
                //如果找不到,说明x=t这条线上的基地已经全部处理完
                if(it==mp1.end())break;
                //取出这个基地的坐标
                pair<int,int>p=it->second;
                //先把它从按x分类的容器中删掉
                //表示这个记录已经处理过了,之后不会再重复从mp1中取到
                mp1.erase(it);
                //如果这个坐标当前还有存活基地
                //说明它还没有被之前别的操作真正摧毁掉
                if(mp[p]>0){
                    //本次攻击摧毁一个基地
                    ans++;
                    //该坐标剩余基地数-1
                    mp[p]--;
                }
            }
        }
        //s==1:摧毁直线y=t上的所有基地
        else{
            //不断在mp2里查找key=t的基地
            while(1){
                auto it=mp2.find(t);
                //如果找不到,说明y=t这条线上的基地已经全部处理完
                if(it==mp2.end())break;
                //取出这个基地的坐标
                pair<int,int>p=it->second;
                //先把它从按y分类的容器中删掉
                mp2.erase(it);
                //如果这个坐标当前还有存活基地
                if(mp[p]>0){
                    //本次攻击摧毁一个基地
                    ans++;
                    //该坐标剩余基地数-1
                    mp[p]--;
                }
            }
        }
        //输出这次攻击摧毁的基地数量
        cout<<ans<<endl;
    }
    return 0;
}