Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65768/65768 K (Java/Others) Total Submission(s): 3492 Accepted Submission(s): 1323
#include<bits/stdc++.h> using namespace std; int n,m; int a,b; map<int,multiset<int> >mp1; map<int,multiset<int> >mp2; int main() { while(scanf("%d%d",&n,&m)!=EOF) { if(n==0&&m==0) break; mp1.clear(); mp2.clear(); for(int i=1; i<=n; i++) { scanf("%d %d",&a,&b); mp1[a].insert(b); mp2[b].insert(a); } for(int i=1; i<=m; i++) { scanf("%d%d",&a,&b); if(a==0) { printf("%d\n",mp1[b].size()); for(multiset<int>::iterator it=mp1[b].begin(); it!=mp1[b].end(); it++) mp2[*it].erase(b); mp1[b].clear(); } else { printf("%d\n",mp2[b].size()); for(multiset<int>::iterator it=mp2[b].begin(); it!=mp2[b].end(); it++) mp1[*it].erase(b); mp2[b].clear(); } } printf("\n"); } return 0; }
原文:http://www.cnblogs.com/hsd-/p/4970489.html