Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Pit-Rada Cosmin
- */
- #include <vector>
- #include <fstream>
- #include <algorithm>
- #include <iostream>
- using namespace std;
- void split(vector<int> &r, vector<int> &c, int mr, int mc, int &r1, int &c1, int &r2, int &c2)
- {
- vector<int> cnt(mr + mc + 1);
- for (int i = 0; i < r.size(); i++) cnt[r[i] + c[i]]++;
- r1 = r2 = c1 = c2 = 0;
- if (r.size() % 2) return;
- for (int d = 3, s = cnt[2]; d < mr + mc; s += cnt[d++])
- {
- if (!cnt[d] && s == r.size()/2)
- {
- c1 = max(d - mr, 1); r1 = d - c1;
- r2 = max(d - mc, 1); c2 = d - r2;
- return;
- }
- }
- }
- int main()
- {
- ifstream fin("vaslui1475.in");
- ofstream fout("vaslui1475.out");
- int mr, mc, n;
- fin >> mr >> mc >> n;
- vector<int> r(n), c(n);
- int r1, c1, r2, c2, r3, c3, r4, c4;
- for (int i = 0; i < n; i++)
- fin >> r[i] >> c[i];
- split(r, c, mr, mc, r1, c1, r2, c2);
- for (int i = 0; i < n; i++)
- c[i] = mc + 1 - c[i];
- split(r, c, mr, mc, r3, c3, r4, c4);
- c3 = mc + 1 - c3, c4 = mc + 1 - c4; swap(r3, r4); swap(c3, c4);
- for (int i = 0; i < n; i++)
- c[i] = mc + 1 - c[i];
- int diff = 0;
- for (int i = 0; i < n; i++) if (r[i] + c[i] < r1 + c1)
- diff += (r[i] - c[i] > r3 - c3) ? -1 : +1;
- if (!r1) swap(r1, r3), swap(c1, c3), swap(r2, r4), swap(c2, c4);
- if (!n)
- {
- r1 = 2; c1 = 1; r2 = 1; c2 = 2;
- r3 = c3 = r4 = c4 = 0;
- if (mr > 2 && mc > 2)
- {
- r1 = 3; c1 = 1; r2 = 1; c2 = 3;
- r3 = c3 = 1; r4 = c4 = min(mr, mr);
- }
- }
- if (!r1)
- {
- fout << -1 << "\n" << -1;
- return 0;
- }
- fout << r1 << " " << c1 << " " << r2 << " " << c2 << "\n";
- if (!r3 || diff)
- {
- fout << "-1";
- return 0;
- }
- fout << r1 << " " << c1 << " " << r2 << " " << c2 << " ";
- fout << r3 << " " << c3 << " " << r4 << " " << c4;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement