Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- 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}};
- bool operator!=(pair<int, int> a, pair<int, int> b)
- {
- return (a.first != b.first && a.second != b.second);
- }
- bool f(pair<int, int> a, pair<int, int> b, pair<int, int> c)
- {
- set<int> s1, s2;
- s1.insert(a.first);
- s1.insert(b.first);
- s1.insert(c.first);
- s2.insert(a.second);
- s2.insert(b.second);
- s2.insert(c.second);
- return ((s1.size() == 3 && s2.size() == 1) || (s2.size() == 3 && s1.size() == 1) || (s2.size() == 3 && s1.size() == 3));
- }
- check(vector<vector<set<int>>> &m)
- {
- for(int i = 1; i <= 9; i++)
- {
- // cout << i << " ";
- if(m[v[i].first][v[i].second].size() == 0)
- continue;
- for(int j = 1; j <= 9; j++)
- {
- if(m[v[j].first][v[j].second].size() == 0)
- continue;
- for(int k = 1; k <= 9; k++)
- {
- if(m[v[k].first][v[k].second].size() == 0)
- continue;
- if(f(v[i], v[j], v[k]))
- {
- // cout << "123";
- int i1 = *m[v[i].first][v[i].second].begin();
- int i2 = *m[v[j].first][v[j].second].begin();
- int i3 = *m[v[k].first][v[k].second].begin();
- cout << i1 << " " << i2 << " " << i3 << "\n";
- m[v[i].first][v[i].second].erase(*m[v[i].first][v[i].second].begin());
- m[v[j].first][v[j].second].erase(*m[v[j].first][v[j].second].begin());
- m[v[k].first][v[k].second].erase(*m[v[k].first][v[k].second].begin());
- }
- }
- }
- }
- for(int i = 1; i <= 9; i++)
- {
- if(m[v[i].first][v[i].second].size() == 3)
- {
- int i1 = *m[v[i].first][v[i].second].begin();
- m[v[i].first][v[i].second].erase(*m[v[i].first][v[i].second].begin());
- int i2 = *m[v[i].first][v[i].second].begin();
- m[v[i].first][v[i].second].erase(*m[v[i].first][v[i].second].begin());
- int i3 = *m[v[i].first][v[i].second].begin();
- m[v[i].first][v[i].second].erase(*m[v[i].first][v[i].second].begin());
- // cout << "ffff";
- cout << i1 << " " << i2 << " " << i3 << "\n";
- }
- }
- }
- main()
- {
- vector<vector<set<int>>> m(4, vector<set<int>>(4, set<int>()));
- int n;
- cin >> n;
- for(int i = 0; i < n; i++)
- {
- int f, t;
- cin >> f >> t;
- m[f][t].insert(i + 1);
- check(m);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement