fork download
  1. #include <cstdio>
  2. #include <set>
  3. #include <iterator>
  4.  
  5. using namespace std;
  6.  
  7. int main()
  8. {
  9. long int n, size, i;
  10. char op;
  11. long int val;
  12.  
  13. scanf("%ld", &n);
  14.  
  15. multiset<long int> minset;
  16. multiset<long int> maxset;
  17. multiset<long int>::iterator itr1;
  18. long int max_minset, min_maxset;
  19.  
  20. for (i = 1; i <= n; ++i) {
  21. scanf("%c", &op);
  22. scanf("%c", &op);
  23. scanf("%ld", &val);
  24. printf("i = %ld, ", i);
  25.  
  26. if (op == 'a') {
  27. if (minset.empty() && maxset.empty()) {
  28. minset.insert(val);
  29. } else {
  30. max_minset = *(--minset.end());
  31. //printf("In Insert --> min_maxset = %d, max_minset = %d\n", min_maxset, max_minset);
  32.  
  33. if (val > max_minset) {
  34. maxset.insert(val);
  35. } else {
  36. minset.insert(val);
  37. }
  38. }
  39. } else {
  40. if (minset.empty() && maxset.empty()) {
  41. printf("Wrong!\n");
  42. continue;
  43. }
  44.  
  45. max_minset = *(--minset.end());
  46.  
  47. if (val > max_minset) {
  48. if (maxset.find(val) == maxset.end()) {
  49. printf("Wrong!----->\n");
  50. continue;
  51. }
  52.  
  53. maxset.erase(maxset.find(val));
  54. } else {
  55. minset.erase(minset.find(val));
  56. }
  57. }
  58.  
  59. if (minset.empty() && maxset.empty()) {
  60. printf("Wrong!\n");
  61. continue;
  62. }
  63.  
  64. if (maxset.size() > minset.size()) {
  65. min_maxset = *(maxset.begin());
  66. maxset.erase(maxset.find(min_maxset));
  67. minset.insert(min_maxset);
  68. }
  69.  
  70. if (minset.size() > maxset.size() + 1) {
  71. max_minset = *(--minset.end());
  72. minset.erase(minset.find(max_minset));
  73. maxset.insert(max_minset);
  74. }
  75.  
  76. printf(" || op = %c, val = %ld, || Min Set --> ", op, val);
  77. itr1 = minset.begin();
  78. while (itr1 != minset.end()) {
  79. printf("%d ", *itr1);
  80. ++itr1;
  81. }
  82.  
  83. printf(" || Max Set --> ");
  84. itr1 = maxset.begin();
  85. while (itr1 != maxset.end()) {
  86. printf("%d ", *itr1);
  87. ++itr1;
  88. }
  89.  
  90. size = minset.size() + maxset.size();
  91. max_minset = *(--minset.end());
  92.  
  93. if (size == 1 && maxset.empty()) {
  94. printf("%ld\n", *(--minset.end()));
  95. continue;
  96. }
  97.  
  98. min_maxset = *(maxset.begin());
  99.  
  100. if (size % 2 == 0) {
  101. double temp = (max_minset + min_maxset) / 2.0;
  102.  
  103. if (temp == (long int) temp) {
  104. printf("%ld\n", (long int) temp);
  105. } else {
  106. printf("%.1lf\n", temp);
  107. }
  108. } else {
  109. printf("%ld\n", max_minset);
  110. }
  111. }
  112.  
  113. return 0;
  114. }
Runtime error #stdin #stdout #stderr 0s 3488KB
stdin
50
a -2147483648
a -2147483648
a -2147483647
r -2147483648
a 2147483647
r -2147483648
a 10
a 10
a 10
r 10
r 10
r 10
r 100
r 100
r 100
r -2147483648
r 2147483647
r 10
a 1
a -1
a 1
a -1
r 1
r -1
r -1
r -1
r -1
r 1
r 1
r 0
a 0
a 1
a 2147483647
a 2
r 1
a 2147483646
r 2
a 2147483640
a 10
r 2
r 2
r 2
r 1
r 1
r 1
a 2147483640
a 2147483640
a -2147483648
a -2147483640
r 2147483640
stdout
i = 1,  || op = a, val = -2147483648, || Min Set --> -2147483648  || Max Set --> -2147483648
i = 2,  || op = a, val = -2147483648, || Min Set --> -2147483648  || Max Set --> -2147483648 0
i = 3,  || op = a, val = -2147483647, || Min Set --> -2147483648 -2147483648  || Max Set --> -2147483647 -2147483648
i = 4,  || op = r, val = -2147483648, || Min Set --> -2147483648  || Max Set --> -2147483647 0.5
i = 5,  || op = a, val = 2147483647, || Min Set --> -2147483648 -2147483647  || Max Set --> 2147483647 -2147483647
i = 6,  || op = r, val = -2147483648, || Min Set --> -2147483647  || Max Set --> 2147483647 0
i = 7,  || op = a, val = 10, || Min Set --> -2147483647 10  || Max Set --> 2147483647 10
i = 8,  || op = a, val = 10, || Min Set --> -2147483647 10  || Max Set --> 10 2147483647 10
i = 9,  || op = a, val = 10, || Min Set --> -2147483647 10 10  || Max Set --> 10 2147483647 10
i = 10,  || op = r, val = 10, || Min Set --> -2147483647 10  || Max Set --> 10 2147483647 10
i = 11,  || op = r, val = 10, || Min Set --> -2147483647 10  || Max Set --> 2147483647 10
i = 12,  || op = r, val = 10, || Min Set --> -2147483647  || Max Set --> 2147483647 0
i = 13, Wrong!----->
i = 14, Wrong!----->
i = 15, Wrong!----->
i = 16, 
stderr
*** Error in `./prog': free(): invalid pointer: 0xbfe0ceb4 ***
======= Backtrace: =========
/lib/i386-linux-gnu/i686/cmov/libc.so.6(+0x75e72)[0xb74f8e72]
/lib/i386-linux-gnu/i686/cmov/libc.so.6(+0x76bb0)[0xb74f9bb0]
/usr/lib/i386-linux-gnu/libstdc++.so.6(_ZdlPv+0x1f)[0xb76db82f]
./prog[0x8048e53]
./prog[0x8048b17]
/lib/i386-linux-gnu/i686/cmov/libc.so.6(__libc_start_main+0xf5)[0xb749c8f5]
./prog[0x8048c69]
======= Memory map: ========
08048000-0804a000 r-xp 00000000 08:01 14703      /home/czQRye/prog
0804a000-0804b000 rw-p 00001000 08:01 14703      /home/czQRye/prog
09970000-09991000 rw-p 00000000 00:00 0          [heap]
b7481000-b7483000 rw-p 00000000 00:00 0 
b7483000-b762c000 r-xp 00000000 08:01 373        /lib/i386-linux-gnu/i686/cmov/libc-2.17.so
b762c000-b762d000 ---p 001a9000 08:01 373        /lib/i386-linux-gnu/i686/cmov/libc-2.17.so
b762d000-b762f000 r--p 001a9000 08:01 373        /lib/i386-linux-gnu/i686/cmov/libc-2.17.so
b762f000-b7630000 rw-p 001ab000 08:01 373        /lib/i386-linux-gnu/i686/cmov/libc-2.17.so
b7630000-b7633000 rw-p 00000000 00:00 0 
b7633000-b764e000 r-xp 00000000 08:01 437        /lib/i386-linux-gnu/libgcc_s.so.1
b764e000-b764f000 rw-p 0001a000 08:01 437        /lib/i386-linux-gnu/libgcc_s.so.1
b764f000-b7650000 rw-p 00000000 00:00 0 
b7650000-b7691000 r-xp 00000000 08:01 385        /lib/i386-linux-gnu/i686/cmov/libm-2.17.so
b7691000-b7692000 r--p 00040000 08:01 385        /lib/i386-linux-gnu/i686/cmov/libm-2.17.so
b7692000-b7693000 rw-p 00041000 08:01 385        /lib/i386-linux-gnu/i686/cmov/libm-2.17.so
b7693000-b776f000 r-xp 00000000 08:01 4970       /usr/lib/i386-linux-gnu/libstdc++.so.6.0.18
b776f000-b7770000 ---p 000dc000 08:01 4970       /usr/lib/i386-linux-gnu/libstdc++.so.6.0.18
b7770000-b7774000 r--p 000dc000 08:01 4970       /usr/lib/i386-linux-gnu/libstdc++.so.6.0.18
b7774000-b7775000 rw-p 000e0000 08:01 4970       /usr/lib/i386-linux-gnu/libstdc++.so.6.0.18
b7775000-b777c000 rw-p 00000000 00:00 0 
b777d000-b7782000 rw-p 00000000 00:00 0 
b7782000-b7783000 r-xp 00000000 00:00 0          [vdso]
b7783000-b77a2000 r-xp 00000000 08:01 422        /lib/i386-linux-gnu/ld-2.17.so
b77a2000-b77a3000 r--p 0001f000 08:01 422        /lib/i386-linux-gnu/ld-2.17.so
b77a3000-b77a4000 rw-p 00020000 08:01 422        /lib/i386-linux-gnu/ld-2.17.so
bfded000-bfe0e000 rw-p 00000000 00:00 0          [stack]