Advertisement
Georgiy1108

Untitled

Sep 20th, 2019
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.20 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. vector<pair<int, int>> v{{0, 0}, {1, 1}, {1, 2}, {1, 3}, {2, 1}, {2, 2}, {2, 3}, {3, 1}, {3, 2}, {3, 3}};
  6.  
  7. bool operator!=(pair<int, int> a, pair<int, int> b)
  8. {
  9.     return (a.first != b.first && a.second != b.second);
  10. }
  11.  
  12. bool f(pair<int, int> a, pair<int, int> b, pair<int, int> c)
  13. {
  14.     set<int> s1, s2;
  15.     s1.insert(a.first);
  16.     s1.insert(b.first);
  17.     s1.insert(c.first);
  18.     s2.insert(a.second);
  19.     s2.insert(b.second);
  20.     s2.insert(c.second);
  21.     return ((s1.size() == 3 && s2.size() == 1) || (s2.size() == 3 && s1.size() == 1) || (s2.size() == 3 && s1.size() == 3));
  22. }
  23.  
  24. check(vector<vector<set<int>>> &m)
  25. {
  26.     for(int i = 1; i <= 9; i++)
  27.     {
  28. //      cout << i << " ";
  29.         if(m[v[i].first][v[i].second].size() == 0)
  30.             continue;
  31.         for(int j = 1; j <= 9; j++)
  32.         {
  33.             if(m[v[j].first][v[j].second].size() == 0)
  34.                 continue;
  35.             for(int k = 1; k <= 9; k++)
  36.             {
  37.                 if(m[v[k].first][v[k].second].size() == 0)
  38.                     continue;
  39.                 if(f(v[i], v[j], v[k]))
  40.                 {
  41. //                  cout << "123";
  42.                     int i1 = *m[v[i].first][v[i].second].begin();
  43.                     int i2 = *m[v[j].first][v[j].second].begin();
  44.                     int i3 = *m[v[k].first][v[k].second].begin();
  45.                     cout << i1 << " " << i2 << " " << i3 << "\n";
  46.                     m[v[i].first][v[i].second].erase(*m[v[i].first][v[i].second].begin());
  47.                     m[v[j].first][v[j].second].erase(*m[v[j].first][v[j].second].begin());
  48.                     m[v[k].first][v[k].second].erase(*m[v[k].first][v[k].second].begin());
  49.                 }
  50.             }
  51.         }
  52.     }
  53.     for(int i = 1; i <= 9; i++)
  54.     {
  55.         if(m[v[i].first][v[i].second].size() == 3)
  56.         {
  57.             int i1 = *m[v[i].first][v[i].second].begin();
  58.             m[v[i].first][v[i].second].erase(*m[v[i].first][v[i].second].begin());
  59.             int i2 = *m[v[i].first][v[i].second].begin();
  60.             m[v[i].first][v[i].second].erase(*m[v[i].first][v[i].second].begin());
  61.             int i3 = *m[v[i].first][v[i].second].begin();
  62.             m[v[i].first][v[i].second].erase(*m[v[i].first][v[i].second].begin());
  63. //          cout << "ffff";
  64.             cout << i1 << " " << i2 << " " << i3 << "\n";
  65.         }
  66.     }
  67. }
  68.  
  69. main()
  70. {
  71.     vector<vector<set<int>>> m(4, vector<set<int>>(4, set<int>()));
  72.     int n;
  73.     cin >> n;
  74.     for(int i = 0; i < n; i++)
  75.     {
  76.         int f, t;
  77.         cin >> f >> t;
  78.         m[f][t].insert(i + 1);
  79.         check(m);
  80.     }
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement