/**Time: 125ms*题目大意:* 给定一个n,代表有n种操作,push代表把元素放入容器。* pop a,表示在容器中取出小于或等于a的最大元素。*解题思路:* 用multiset来模拟这个过程即可。*/
View Code
1 #include2 #include 3 using namespace std; 4 int main() 5 { 6 #ifndef ONLINE_JUDGE 7 freopen("in.txt", "r", stdin); 8 #endif 9 int n, a;10 char op[5];11 while(cin >> n)12 {13 multiset S;14 multiset ::iterator p, q;15 while(n--)16 {17 scanf("%s %d", op, &a);18 if(op[1] == 'u')19 S.insert(a);20 else21 {22 p = S.begin();23 if(*p > a)24 {25 printf("No Element!\n");26 continue;27 }28 p = S.find(a);29 if(p != S.end())30 {31 printf("%d\n", *p);32 S.erase(p);33 }34 else35 {36 S.insert(a);37 p = q = S.find(a);38 p-- ;39 printf("%d\n", *p);40 S.erase(p);41 S.erase(q);42 }43 }44 }45 printf("\n");46 }47 return 0;48 }