fork download
  1.  
  2. #include <bits/stdc++.h>
  3.  
  4. using namespace std;
  5.  
  6.  
  7. //debug statements
  8. #define TRACE
  9.  
  10. #ifdef TRACE
  11. #define trace1(x) cerr << #x << ": " << x << endl;
  12. #define trace2(x, y) cerr << #x << ": " << x << " | " << #y << ": " << y << endl;
  13. #define trace3(x, y, z) cerr << #x << ": " << x << " | " << #y << ": " << y << " | " << #z << ": " << z << endl;
  14. #define trace4(a, b, c, d) cerr << #a << ": " << a << " | " << #b << ": " << b << " | " << #c << ": " << c << " | " << #d << ": " << d << endl;
  15. #define trace5(a, b, c, d, e) cerr << #a << ": " << a << " | " << #b << ": " << b << " | " << #c << ": " << c << " | " << #d << ": " << d << " | " << #e << ": " << e << endl;
  16. #define trace6(a, b, c, d, e, f) cerr << #a << ": " << a << " | " << #b << ": " << b << " | " << #c << ": " << c << " | " << #d << ": " << d << " | " << #e << ": " << e << " | " << #f << ": " << f << endl;
  17.  
  18. #else
  19.  
  20. #define trace1(x)
  21. #define trace2(x, y)
  22. #define trace3(x, y, z)
  23. #define trace4(a, b, c, d)
  24. #define trace5(a, b, c, d, e)
  25. #define trace6(a, b, c, d, e, f)
  26.  
  27. #endif
  28.  
  29. //Structure of Interval defined by nterviewbit
  30. struct Interval{
  31. int start;
  32. int end;
  33. Interval() : start(0), end(0) {}
  34. Interval(int s, int e) : start(s), end(e) {}
  35. };
  36.  
  37. //operator just in case I needed sorting
  38. bool compare(Interval a , Interval b){
  39. if(a.start<b.start)
  40. return true;
  41. if(a.end<b.end)
  42. return true;
  43. return false;
  44. }
  45.  
  46. //swap function to check if start is greater than end , if so then swap them
  47. void swapp(Interval *t){
  48. if(t->start>t->end){
  49. int p = t->end ;
  50. t->end = t->start;
  51. t->start = p;
  52. }
  53. }
  54.  
  55. class Solution {
  56. public:
  57. vector<Interval>merge(vector<Interval> &A) {
  58. vector<Interval>ans;
  59. sort(A.begin(),A.end(),compare);
  60. for(int i=0;i<(int)A.size();i++){
  61. trace2(A[i].start, A[i].end);
  62. swapp(&A[i]);
  63. trace2(A[i].start, A[i].end);
  64. }
  65. int j=0;
  66. int sz = A.size();
  67. while(j<sz){
  68. while(j+1<sz and max(A[j].start,A[j+1].start) <= min(A[j].end,A[j+1].end)){
  69. Interval *x = new Interval(min(A[j].start,A[j+1].start),max(A[j].end,A[j+1].end));
  70. trace2(x->start,x->end);
  71. trace2(A[j].start,A[j].end);
  72. A[j] = *x;
  73. trace2(A[j].start,A[j].end);
  74. trace2(A[j+1].start,A[j+1].end);
  75. A[j+1] = *x;
  76. trace2(A[j+1].start,A[j+1].end);
  77. j++;
  78. free(x);
  79. }
  80. ans.push_back(A[j]);
  81. j++;
  82. }
  83. // for(int i=0;i<ans.size();i++){
  84. // printf("i %d [%d %d]",i,ans[i].start,ans[i].end);
  85. // cout<<endl;
  86. // }
  87. return ans;
  88. }
  89.  
  90. };
  91. // BEGIN CUT HERE
  92.  
  93. int main() {
  94. Solution *obj = new Solution();
  95. // x denotes the number of intervals
  96. int x;
  97. cin>>x;
  98. vector<Interval>v;
  99. //an interval input consist of 2 integers start and end marked by a and b respectively
  100. for(int i=0;i<x;i++){
  101. int a,b;
  102. cin>>a>>b;
  103. Interval *interval = new Interval(a,b);
  104. trace2(interval->start,interval->end);
  105. v.push_back(*interval);
  106.  
  107. delete interval;
  108. }
  109. vector<Interval>ans = obj->merge(v);
  110. for(int i=0;i<(int)ans.size();i++){
  111. printf("i %d [%d %d]",i,ans[i].start,ans[i].end);
  112. cout<<endl;
  113. }
  114. }
  115.  
Runtime error #stdin #stdout #stderr 0s 16072KB
stdin
29 54 75 56 60 61 86 22 43 56 87 32 53 14 81 64 65 9 42 12 33 22 58 84 90 27 59 41 48 43 47 22 29 16 23 41 72 15 87 20 59 45 84 14 77 72 93 20 58 47 53 25 88 5 89 34 97 14 47
stdout
Standard output is empty
stderr
interval->start: 54 | interval->end: 75
interval->start: 56 | interval->end: 60
interval->start: 61 | interval->end: 86
interval->start: 22 | interval->end: 43
interval->start: 56 | interval->end: 87
interval->start: 32 | interval->end: 53
interval->start: 14 | interval->end: 81
interval->start: 64 | interval->end: 65
interval->start: 9 | interval->end: 42
interval->start: 12 | interval->end: 33
interval->start: 22 | interval->end: 58
interval->start: 84 | interval->end: 90
interval->start: 27 | interval->end: 59
interval->start: 41 | interval->end: 48
interval->start: 43 | interval->end: 47
interval->start: 22 | interval->end: 29
interval->start: 16 | interval->end: 23
interval->start: 41 | interval->end: 72
interval->start: 15 | interval->end: 87
interval->start: 20 | interval->end: 59
interval->start: 45 | interval->end: 84
interval->start: 14 | interval->end: 77
interval->start: 72 | interval->end: 93
interval->start: 20 | interval->end: 58
interval->start: 47 | interval->end: 53
interval->start: 25 | interval->end: 88
interval->start: 5 | interval->end: 89
interval->start: 34 | interval->end: 97
interval->start: 14 | interval->end: 47
A[i].start: 272 | A[i].end: 0
A[i].start: 0 | A[i].end: 272
A[i].start: 9 | A[i].end: 42
A[i].start: 9 | A[i].end: 42
A[i].start: 12 | A[i].end: 33
A[i].start: 12 | A[i].end: 33
A[i].start: 14 | A[i].end: 81
A[i].start: 14 | A[i].end: 81
A[i].start: 16 | A[i].end: 23
A[i].start: 16 | A[i].end: 23
A[i].start: 22 | A[i].end: 29
A[i].start: 22 | A[i].end: 29
A[i].start: 22 | A[i].end: 43
A[i].start: 22 | A[i].end: 43
A[i].start: 14 | A[i].end: 47
A[i].start: 14 | A[i].end: 47
A[i].start: 14 | A[i].end: 77
A[i].start: 14 | A[i].end: 77
A[i].start: 15 | A[i].end: 87
A[i].start: 15 | A[i].end: 87
A[i].start: 41 | A[i].end: 48
A[i].start: 41 | A[i].end: 48
A[i].start: 20 | A[i].end: 58
A[i].start: 20 | A[i].end: 58
A[i].start: 22 | A[i].end: 58
A[i].start: 22 | A[i].end: 58
A[i].start: 20 | A[i].end: 59
A[i].start: 20 | A[i].end: 59
A[i].start: 25 | A[i].end: 88
A[i].start: 25 | A[i].end: 88
A[i].start: 27 | A[i].end: 59
A[i].start: 27 | A[i].end: 59
A[i].start: 32 | A[i].end: 53
A[i].start: 32 | A[i].end: 53
A[i].start: 34 | A[i].end: 97
A[i].start: 34 | A[i].end: 97
A[i].start: 41 | A[i].end: 72
A[i].start: 41 | A[i].end: 72
A[i].start: 43 | A[i].end: 47
A[i].start: 43 | A[i].end: 47
A[i].start: 47 | A[i].end: 53
A[i].start: 47 | A[i].end: 53
A[i].start: 56 | A[i].end: 60
A[i].start: 56 | A[i].end: 60
A[i].start: 64 | A[i].end: 65
A[i].start: 64 | A[i].end: 65
A[i].start: 54 | A[i].end: 75
A[i].start: 54 | A[i].end: 75
A[i].start: 45 | A[i].end: 84
A[i].start: 45 | A[i].end: 84
A[i].start: 56 | A[i].end: 87
A[i].start: 56 | A[i].end: 87
A[i].start: 61 | A[i].end: 86
A[i].start: 61 | A[i].end: 86
A[i].start: 84 | A[i].end: 90
A[i].start: 84 | A[i].end: 90
A[i].start: 72 | A[i].end: 93
A[i].start: 72 | A[i].end: 93
x->start: 0 | x->end: 272
A[j].start: 0 | A[j].end: 272
A[j].start: 0 | A[j].end: 272
A[j+1].start: 9 | A[j+1].end: 42
A[j+1].start: 0 | A[j+1].end: 272
x->start: 0 | x->end: 272
A[j].start: 0 | A[j].end: 272
A[j].start: 0 | A[j].end: 272
A[j+1].start: 12 | A[j+1].end: 33
A[j+1].start: 0 | A[j+1].end: 272
x->start: 0 | x->end: 272
A[j].start: 0 | A[j].end: 272
A[j].start: 0 | A[j].end: 272
A[j+1].start: 14 | A[j+1].end: 81
A[j+1].start: 0 | A[j+1].end: 272
x->start: 0 | x->end: 272
A[j].start: 0 | A[j].end: 272
A[j].start: 0 | A[j].end: 272
A[j+1].start: 16 | A[j+1].end: 23
A[j+1].start: 0 | A[j+1].end: 272
x->start: 0 | x->end: 272
A[j].start: 0 | A[j].end: 272
A[j].start: 0 | A[j].end: 272
A[j+1].start: 22 | A[j+1].end: 29
A[j+1].start: 0 | A[j+1].end: 272
x->start: 0 | x->end: 272
A[j].start: 0 | A[j].end: 272
A[j].start: 0 | A[j].end: 272
A[j+1].start: 22 | A[j+1].end: 43
A[j+1].start: 0 | A[j+1].end: 272
x->start: 0 | x->end: 272
A[j].start: 0 | A[j].end: 272
A[j].start: 0 | A[j].end: 272
A[j+1].start: 14 | A[j+1].end: 47
A[j+1].start: 0 | A[j+1].end: 272
x->start: 0 | x->end: 272
A[j].start: 0 | A[j].end: 272
A[j].start: 0 | A[j].end: 272
A[j+1].start: 14 | A[j+1].end: 77
A[j+1].start: 0 | A[j+1].end: 272
x->start: 0 | x->end: 272
A[j].start: 0 | A[j].end: 272
A[j].start: 0 | A[j].end: 272
A[j+1].start: 15 | A[j+1].end: 87
A[j+1].start: 0 | A[j+1].end: 272
x->start: 0 | x->end: 272
A[j].start: 0 | A[j].end: 272
A[j].start: 0 | A[j].end: 272
A[j+1].start: 41 | A[j+1].end: 48
A[j+1].start: 0 | A[j+1].end: 272
x->start: 0 | x->end: 272
A[j].start: 0 | A[j].end: 272
A[j].start: 0 | A[j].end: 272
A[j+1].start: 20 | A[j+1].end: 58
A[j+1].start: 0 | A[j+1].end: 272
x->start: 0 | x->end: 272
A[j].start: 0 | A[j].end: 272
A[j].start: 0 | A[j].end: 272
A[j+1].start: 22 | A[j+1].end: 58
A[j+1].start: 0 | A[j+1].end: 272
x->start: 0 | x->end: 272
A[j].start: 0 | A[j].end: 272
A[j].start: 0 | A[j].end: 272
A[j+1].start: 20 | A[j+1].end: 59
A[j+1].start: 0 | A[j+1].end: 272
x->start: 0 | x->end: 272
A[j].start: 0 | A[j].end: 272
A[j].start: 0 | A[j].end: 272
A[j+1].start: 25 | A[j+1].end: 88
A[j+1].start: 0 | A[j+1].end: 272
x->start: 0 | x->end: 272
A[j].start: 0 | A[j].end: 272
A[j].start: 0 | A[j].end: 272
A[j+1].start: 27 | A[j+1].end: 59
A[j+1].start: 0 | A[j+1].end: 272
x->start: 0 | x->end: 272
A[j].start: 0 | A[j].end: 272
A[j].start: 0 | A[j].end: 272
A[j+1].start: 32 | A[j+1].end: 53
A[j+1].start: 0 | A[j+1].end: 272
x->start: 0 | x->end: 272
A[j].start: 0 | A[j].end: 272
A[j].start: 0 | A[j].end: 272
A[j+1].start: 34 | A[j+1].end: 97
A[j+1].start: 0 | A[j+1].end: 272
x->start: 0 | x->end: 272
A[j].start: 0 | A[j].end: 272
A[j].start: 0 | A[j].end: 272
A[j+1].start: 41 | A[j+1].end: 72
A[j+1].start: 0 | A[j+1].end: 272
x->start: 0 | x->end: 272
A[j].start: 0 | A[j].end: 272
A[j].start: 0 | A[j].end: 272
A[j+1].start: 43 | A[j+1].end: 47
A[j+1].start: 0 | A[j+1].end: 272
x->start: 0 | x->end: 272
A[j].start: 0 | A[j].end: 272
A[j].start: 0 | A[j].end: 272
A[j+1].start: 47 | A[j+1].end: 53
A[j+1].start: 0 | A[j+1].end: 272
x->start: 0 | x->end: 272
A[j].start: 0 | A[j].end: 272
A[j].start: 0 | A[j].end: 272
A[j+1].start: 56 | A[j+1].end: 60
A[j+1].start: 0 | A[j+1].end: 272
x->start: 0 | x->end: 272
A[j].start: 0 | A[j].end: 272
A[j].start: 0 | A[j].end: 272
A[j+1].start: 64 | A[j+1].end: 65
A[j+1].start: 0 | A[j+1].end: 272
x->start: 0 | x->end: 272
A[j].start: 0 | A[j].end: 272
A[j].start: 0 | A[j].end: 272
A[j+1].start: 54 | A[j+1].end: 75
A[j+1].start: 0 | A[j+1].end: 272
x->start: 0 | x->end: 272
A[j].start: 0 | A[j].end: 272
A[j].start: 0 | A[j].end: 272
A[j+1].start: 45 | A[j+1].end: 84
A[j+1].start: 0 | A[j+1].end: 272
x->start: 0 | x->end: 272
A[j].start: 0 | A[j].end: 272
A[j].start: 0 | A[j].end: 272
A[j+1].start: 56 | A[j+1].end: 87
A[j+1].start: 0 | A[j+1].end: 272
x->start: 0 | x->end: 272
A[j].start: 0 | A[j].end: 272
A[j].start: 0 | A[j].end: 272
A[j+1].start: 61 | A[j+1].end: 86
A[j+1].start: 0 | A[j+1].end: 272
x->start: 0 | x->end: 272
A[j].start: 0 | A[j].end: 272
A[j].start: 0 | A[j].end: 272
A[j+1].start: 84 | A[j+1].end: 90
A[j+1].start: 0 | A[j+1].end: 272
x->start: 0 | x->end: 272
A[j].start: 0 | A[j].end: 272
A[j].start: 0 | A[j].end: 272
A[j+1].start: 72 | A[j+1].end: 93
A[j+1].start: 0 | A[j+1].end: 272