Advertisement
Guest User

Untitled

a guest
Jun 15th, 2012
199
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.74 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<set>
  3.  
  4. using namespace std;
  5.  
  6. int main()
  7. {
  8.     int n;
  9.     scanf("%d",&n);
  10.     multiset<int> s1,s2;
  11.     int b; char c;
  12.     int flag = 0;
  13.     long long median=0;
  14.     multiset<int>::iterator it;
  15.    
  16.     for(int i=0;i<n;i++) {
  17.         flag = 0;
  18.         scanf(" %c %d\n", &c, &b);
  19.         if(c=='a') {
  20.            if(s1.size() == 0) s1.insert(b);
  21.            else {
  22.               it = s1.end(); it--;
  23.               int max = *it;
  24.               if(b > max) s2.insert(b);
  25.               else s1.insert(b);
  26.            }
  27.         }
  28.         else if (c == 'r') {
  29.            it = s1.find(b);
  30.            if(it != s1.end() && *it == b) s1.erase(it);
  31.            else {
  32.               it = s2.find(b);
  33.               if(it != s2.end() && *it == b) s2.erase(it);
  34.               else flag = 1;
  35.            }
  36.         }
  37.      
  38.         // adjust size(make it n/2) of both two sets
  39.         if(s2.size() > s1.size()) {
  40.            it = s2.begin();
  41.            s1.insert(*it);
  42.            s2.erase(it);  
  43.         }
  44.         if(s1.size() > s2.size()+1) {
  45.            it = s1.end();it--;
  46.            s2.insert(*it);
  47.            s1.erase(it);
  48.         }
  49.        
  50.         // finding median
  51.         if(flag == 1 || (s1.size() == 0 && s2.size() == 0))
  52.           printf("Wrong!\n");
  53.         else if(s1.size() > s2.size()) {
  54.            it = s1.end(); it--;
  55.            printf("%d\n",*it);
  56.         }
  57.         else if(s1.size()== s2.size()){
  58.            it = s1.end(); it--;
  59.            median = *it;
  60.            it = s2.begin();
  61.            median += *it;
  62.            if(median%2==0)
  63.               printf("%.0lf\n", median/2.);
  64.            else
  65.               printf("%.1lf\n", median/2.);
  66.         }
  67.         else printf("Wrong!\n");
  68.     }
  69.  
  70.  
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement