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