HDU 4022 Bombing STL 模拟题

来源:互联网 发布:php 调用cdn接口 编辑:程序博客网 时间:2024/06/07 19:54

手动模拟。。

#include<stdio.h>#include<iostream>#include<algorithm>#include<vector>#include<cmath>#include<queue>#include<set>#include<map>using namespace std;#define N 10100#define inf 1000000010map<int,int>x,y;struct X{int x,y;bool operator<(const X&a)const{if(a.x==x)return a.y>y;return a.x>x;}X(int a=0,int b=0):x(a),y(b){}}tmpx;struct Y{int x,y;bool operator<(const Y&a)const{if(a.y==y)return a.x>x;return a.y>y;}Y(int a=0,int b=0):x(a),y(b){}}tmpy;multiset<Y>sety;multiset<Y>::iterator py, ty;multiset<X>setx;multiset<X>::iterator px, tx;int main(){int n, m, u, v;while(scanf("%d %d",&n,&m),n+m){x.clear();y.clear();setx.clear();sety.clear();while(n--){scanf("%d %d",&u,&v);x[u]++;y[v]++;setx.insert(X(u,v));sety.insert(Y(u,v));}while(m--){scanf("%d %d",&u,&v);if(u==0){if(x.find(v)==x.end()){puts("0");continue;}printf("%d\n",x.find(v)->second);x.erase(v);for(px=setx.lower_bound(X(v,-inf));px!=setx.end();){tmpx = *px;if(tmpx.x!=v)break;py = sety.lower_bound(Y(tmpx.x,tmpx.y));sety.erase(py);y[tmpx.y]--;tx = px;px++;setx.erase(tx);}}else {if(y.find(v)==y.end()){puts("0");continue;}printf("%d\n",y.find(v)->second);y.erase(v);for(py=sety.lower_bound(Y(-inf,v));py!=sety.end();){tmpy = *py;if(tmpy.y!=v)break;px = setx.lower_bound(X(tmpy.x,tmpy.y));setx.erase(px);x[tmpy.x]--;ty = py;py++;sety.erase(ty);}}}puts("");}return 0;}


0 0