1002 Bombing The 36th ACM/ICPC Asia Regional Shanghai Site —— Online Contest

1002 Bombing The 36th ACM/ICPC Asia Regional Shanghai Site —— Online Contest
题意:给一个方格的1E9*1E9的地图,以及若干炸弹,每个炸弹的功能是将某行/某列的所有东西消灭,求若干炸弹依次下去,每次消灭了多少东西……
STL硬搞即可……
 1  #include  < cstdio >
 2  #include  < set >
 3  #include  < map >
 4 
 5  using   namespace  std;
 6  typedef multiset < int >  sint;
 7  typedef map < int , multiset < int >   >  line;
 8 
 9  line x;
10  line y;
11 
12  int  bomb(line  & x, line  & y,  int  pos) {
13       int  ret  =  x[pos].size();
14       for  (sint::iterator ii  =  x[pos].begin();
15              ii  !=  x[pos].end();
16              ii ++ ) {
17          y[ * ii].erase(pos);
18      }
19      x[pos].clear();
20       return  ret;
21  }
22 
23  int  main() {
24       for  (;;) {
25           int  n,m;
26          scanf( " %d%d " , & n, & m);
27           if  (n  +  m  ==   0 break ;
28          x.clear();
29          y.clear();
30           while  (n -- ) {
31               int  tx,ty;
32              scanf( " %d%d " , & tx, & ty);
33              x[tx].insert(ty);
34              y[ty].insert(tx);
35          }
36           while  (m -- ) {
37               int  ctrl,pos;
38              scanf( " %d%d " , & ctrl, & pos);
39              printf( " %d\n " ,ctrl  ==   0   ?  bomb(x,y,pos) : bomb(y,x,pos));
40          }
41          printf( " \n " );
42      }
43       return   0 ;
44  }


你可能感兴趣的:(1002 Bombing The 36th ACM/ICPC Asia Regional Shanghai Site —— Online Contest)