HDU 4022 STL

来源:互联网 发布:移动定制机网络解锁 编辑:程序博客网 时间:2024/06/05 07:43

// 使用map<int,multiset<int> > 实现一对多,因为会有重点,所以用multimap


#include<iostream>

#include<cstdio>
#include<map>
#include<set>
using namespace std;

map<int,multiset<int> > cnt_x,cnt_y;

int main(){
    int n,m;
    while(scanf("%d%d",&n,&m),n+m){
        cnt_x.clear();
        cnt_y.clear();
        for(int i=0;i<n;i++){
            int x,y;
            scanf("%d%d",&x,&y);
            cnt_x[x].insert(y);
            cnt_y[y].insert(x);
        }
        for(int i=0;i<m;i++){
            int c,d;
            scanf("%d%d",&c,&d);
            multiset<int>::iterator it;    
            if(c){
                printf("%d\n",cnt_y[d].size());       
                for(it=cnt_y[d].begin();it!=cnt_y[d].end();it++){
                    cnt_x[*it].erase(d);
                }
                cnt_y[d].clear();
            }
            else{
                printf("%d\n",cnt_x[d].size());
                for(it=cnt_x[d].begin();it!=cnt_x[d].end();it++){
                    cnt_y[*it].erase(d);
                }
                cnt_x[d].clear();
            }
        }
        puts("");
    }
}


原创粉丝点击