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. printf(" || op = %c, val = %ld", op, val);
  26.  
  27. if (op == 'a') {
  28. if (minset.empty() && maxset.empty()) {
  29. minset.insert(val);
  30. } else {
  31. max_minset = *(--minset.end());
  32. //printf("In Insert --> min_maxset = %d, max_minset = %d\n", min_maxset, max_minset);
  33.  
  34. if (val > max_minset) {
  35. maxset.insert(val);
  36. } else {
  37. minset.insert(val);
  38. }
  39. }
  40. } else {
  41. if (minset.empty() && maxset.empty()) {
  42. printf("Wrong!\n");
  43. continue;
  44. }
  45.  
  46. max_minset = *(--minset.end());
  47.  
  48. if (val > max_minset) {
  49. if (maxset.find(val) == maxset.end()) {
  50. printf("Wrong!----->\n");
  51. continue;
  52. }
  53.  
  54. maxset.erase(maxset.find(val));
  55. } else {
  56. minset.erase(minset.find(val));
  57. }
  58. }
  59.  
  60. if (minset.empty() && maxset.empty()) {
  61. printf("Wrong!\n");
  62. continue;
  63. }
  64.  
  65. if (maxset.size() > minset.size()) {
  66. printf(" || |max| > |min| || ");
  67. min_maxset = *(maxset.begin());
  68. maxset.erase(maxset.find(min_maxset));
  69. minset.insert(min_maxset);
  70. }
  71.  
  72. if (minset.size() > maxset.size() + 1) {
  73. printf(" || |min| > |max| + 1 || ");
  74. max_minset = *(--minset.end());
  75. minset.erase(minset.find(max_minset));
  76. maxset.insert(max_minset);
  77. }
  78.  
  79. printf(" || Min Set --> ");
  80. itr1 = minset.begin();
  81. while (itr1 != minset.end()) {
  82. printf("%ld ", *itr1);
  83. ++itr1;
  84. }
  85.  
  86. printf(" || Max Set --> ");
  87. itr1 = maxset.begin();
  88. while (itr1 != maxset.end()) {
  89. printf("%ld ", *itr1);
  90. ++itr1;
  91. }
  92.  
  93. size = minset.size() + maxset.size();
  94. max_minset = *(--minset.end());
  95.  
  96. if (size == 1 && maxset.empty()) {
  97. printf("%ld\n", *(--minset.end()));
  98. continue;
  99. }
  100.  
  101. min_maxset = *(maxset.begin());
  102.  
  103. if (size % 2 == 0) {
  104. double temp = (max_minset + min_maxset) / 2.0;
  105.  
  106. if (temp == (long int) temp) {
  107. printf("%ld\n", (long int) temp);
  108. } else {
  109. printf("%.1lf\n", temp);
  110. }
  111. } else {
  112. printf("%ld\n", max_minset);
  113. }
  114. }
  115.  
  116. return 0;
  117. }
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| > |max| + 1 ||  || Min Set --> -2147483648  || Max Set --> -2147483648 0
i = 3,  || op = a, val = -2147483647 || |max| > |min| ||  || 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 || |max| > |min| ||  || 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 || |max| > |min| ||  || Min Set --> -2147483647 10  || Max Set --> 2147483647 10
i = 8,  || op = a, val = 10 || |min| > |max| + 1 ||  || 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 || |max| > |min| ||  || Min Set --> -2147483647 10  || Max Set --> 2147483647 10
i = 12,  || op = r, val = 10 || Min Set --> -2147483647  || Max Set --> 2147483647 0
i = 13,  || op = r, val = 100Wrong!----->
i = 14,  || op = r, val = 100Wrong!----->
i = 15,  || op = r, val = 100Wrong!----->
i = 16,  || op = r, val = -2147483648
stderr
*** Error in `./prog': free(): invalid pointer: 0xbf8a9d94 ***
======= Backtrace: =========
/lib/i386-linux-gnu/i686/cmov/libc.so.6(+0x75e72)[0xb746ee72]
/lib/i386-linux-gnu/i686/cmov/libc.so.6(+0x76bb0)[0xb746fbb0]
/usr/lib/i386-linux-gnu/libstdc++.so.6(_ZdlPv+0x1f)[0xb765182f]
./prog[0x8048e83]
./prog[0x8048ac7]
/lib/i386-linux-gnu/i686/cmov/libc.so.6(__libc_start_main+0xf5)[0xb74128f5]
./prog[0x8048c99]
======= Memory map: ========
08048000-0804a000 r-xp 00000000 08:01 14703      /home/M2C9w3/prog
0804a000-0804b000 rw-p 00001000 08:01 14703      /home/M2C9w3/prog
09135000-09156000 rw-p 00000000 00:00 0          [heap]
b73f7000-b73f9000 rw-p 00000000 00:00 0 
b73f9000-b75a2000 r-xp 00000000 08:01 373        /lib/i386-linux-gnu/i686/cmov/libc-2.17.so
b75a2000-b75a3000 ---p 001a9000 08:01 373        /lib/i386-linux-gnu/i686/cmov/libc-2.17.so
b75a3000-b75a5000 r--p 001a9000 08:01 373        /lib/i386-linux-gnu/i686/cmov/libc-2.17.so
b75a5000-b75a6000 rw-p 001ab000 08:01 373        /lib/i386-linux-gnu/i686/cmov/libc-2.17.so
b75a6000-b75a9000 rw-p 00000000 00:00 0 
b75a9000-b75c4000 r-xp 00000000 08:01 437        /lib/i386-linux-gnu/libgcc_s.so.1
b75c4000-b75c5000 rw-p 0001a000 08:01 437        /lib/i386-linux-gnu/libgcc_s.so.1
b75c5000-b75c6000 rw-p 00000000 00:00 0 
b75c6000-b7607000 r-xp 00000000 08:01 385        /lib/i386-linux-gnu/i686/cmov/libm-2.17.so
b7607000-b7608000 r--p 00040000 08:01 385        /lib/i386-linux-gnu/i686/cmov/libm-2.17.so
b7608000-b7609000 rw-p 00041000 08:01 385        /lib/i386-linux-gnu/i686/cmov/libm-2.17.so
b7609000-b76e5000 r-xp 00000000 08:01 4970       /usr/lib/i386-linux-gnu/libstdc++.so.6.0.18
b76e5000-b76e6000 ---p 000dc000 08:01 4970       /usr/lib/i386-linux-gnu/libstdc++.so.6.0.18
b76e6000-b76ea000 r--p 000dc000 08:01 4970       /usr/lib/i386-linux-gnu/libstdc++.so.6.0.18
b76ea000-b76eb000 rw-p 000e0000 08:01 4970       /usr/lib/i386-linux-gnu/libstdc++.so.6.0.18
b76eb000-b76f2000 rw-p 00000000 00:00 0 
b76f3000-b76f8000 rw-p 00000000 00:00 0 
b76f8000-b76f9000 r-xp 00000000 00:00 0          [vdso]
b76f9000-b7718000 r-xp 00000000 08:01 422        /lib/i386-linux-gnu/ld-2.17.so
b7718000-b7719000 r--p 0001f000 08:01 422        /lib/i386-linux-gnu/ld-2.17.so
b7719000-b771a000 rw-p 00020000 08:01 422        /lib/i386-linux-gnu/ld-2.17.so
bf889000-bf8aa000 rw-p 00000000 00:00 0          [stack]