Advertisement
Guest User

Untitled

a guest
Oct 16th, 2019
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.91 KB | None | 0 0
  1. //контест не оч :c
  2. #ifdef DEBUG
  3. #include "./bits.cpp"
  4. using namespace std;
  5. #define dbg(x) ;
  6. #else
  7. #include<bits/stdc++.h>
  8. using namespace std;
  9. #define dbg(x) cout << #x << ':' << x
  10. #endif
  11. #pragma GCC optimize("Ofast")
  12. #pragma GCC optimize("no-stack-protector")
  13. #pragma GCC optimize("unroll-loops")
  14. #pragma GCC target("sse,sse2,sse3,ssse3,popcnt,abm,mmx,tune=native")
  15. #pragma GCC optimize("fast-math")
  16. // #define endl '\n'
  17. #define int long long
  18. #define pt pair<int, int>
  19. #define x first
  20. #define y second
  21.  
  22. struct ev{
  23. int x, y, z;
  24. int i;
  25. bool operator<(const ev &oth) const{
  26. if(x == oth.x){
  27. if(y == oth.y){
  28. return z < (oth.z);
  29. }
  30. return (y) < (oth.y);
  31. }
  32. return (x) < (oth.x);
  33. }
  34. };
  35.  
  36. signed main() {
  37. #ifdef DEBUG
  38. // freopen("input.txt", "r", stdin);
  39. // freopen("05.txt", "w", stdout);
  40. #else
  41. // freopen(".in", "r", stdin);
  42. // freopen(".out", "w", stdout);
  43. #endif
  44. ios_base::sync_with_stdio(false);
  45. cin.tie(0);
  46. cout.tie(0);
  47. int n;
  48. cin >> n;
  49. vector<ev> a(n);
  50. for(int i = 0; i < n; i++){
  51. cin >> a[i].x >> a[i].y >> a[i].z;
  52. a[i].i = i;
  53. }
  54. sort(a.begin(), a.end());
  55. int sv = -1, sy = -1;
  56. vector<int> v(n, 0);
  57. for(int i = 0; i < n; i+=2){
  58. if(i + 1 < n && a[i].x == a[i + 1].x){
  59. if(a[i].y == a[i + 1].y){
  60. v[a[i].i] += 1;
  61. v[a[i + 1].i] += 1;
  62. cout << a[i].i + 1 << ' ' << a[i + 1].i + 1 << endl;
  63. if(sv != -1 && sy != -1){
  64. v[a[sv].i] += 1;
  65. v[a[sy].i] += 1;
  66. cout << a[sv].i + 1 << ' ' << a[sy].i + 1 << endl;
  67. sv = -1;
  68. sy = -1;
  69. }
  70. }
  71. else {
  72. if(sy == -1){
  73. sy = i;
  74. }
  75. else{
  76. v[a[i].i]++;
  77. v[a[sy].i]++;
  78. cout << a[i].i + 1 << ' ' << a[sy].i + 1 << endl;
  79. sy = -1;
  80. }
  81. i--;
  82. }
  83. }
  84. else{
  85. if(sv == -1 && sy != -1){
  86. sv = sy;
  87. sy = -1;
  88. }
  89. if(sv == -1)
  90. sv = i;
  91. else{
  92. v[a[i].i] += 1;
  93. v[a[sv].i] += 1;
  94. cout << a[i].i + 1 << ' ' << a[sv].i + 1 << endl;
  95. sv = -1;
  96. }
  97. i--;
  98. }
  99. }
  100. int l = -1;
  101. for(int i = 0; i < n; i++){
  102. if(!v[i]){
  103. if(l == -1) l = i;
  104. else {
  105. v[l] += 1;
  106. v[i] += 1;
  107. cout << l + 1 << ' ' << i + 1 << endl;
  108. l = -1;
  109. }
  110. }
  111. }
  112. for(int i = 0; i < n; i++) assert(v[i] == 1);
  113. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement