Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Weryfikacja zadania Żołędzie
- * Rozwiązanie brutalne O(n^2 log n)
- *
- * Autor: Michał Zawalski
- */
- #include <bits/stdc++.h>
- using namespace std;
- #define x first
- #define y second
- typedef long long int lli;
- typedef pair<lli, lli> pkt;
- pkt mn(const pkt &a, const pkt &b) {
- return {a.x*b.x-a.y*b.y, a.x*b.y+a.y*b.x};
- }
- lli mod(const pkt &a) {
- return a.x*a.x+a.y*a.y;
- }
- vector<pkt> in1, in2;
- bool spr(const pkt &a, const pkt &b) {
- if (mod(a) != mod(b))
- return 0;
- // printf("(%lld %lld), (%lld %lld)\n", a.x, a.y, b.x, b.y);
- vector<pkt> v1, v2;
- for (auto p : in1)
- v1.push_back(mn(p, b));
- for (auto p : in2)
- v2.push_back(mn(p, a));
- sort(v1.begin(), v1.end());
- sort(v2.begin(), v2.end());
- for (int i=0; i<(int)v1.size(); i++) {
- // printf(" (%lld %lld)-(%lld %lld) ", v1[i].x, v1[i].y, v2[i].x, v2[i].y);
- if (v1[i] != v2[i])
- return 0;
- }
- return 1;
- }
- int main() {
- int n, k1 = 0, k2 = 0;
- lli x, y;
- scanf("%d", &n);
- for (int i=0; i<n; i++) {
- scanf("%lld%lld", &x, &y);
- if (x == 0 && y==0)
- k1++;
- else
- in1.push_back({x, y});
- }
- for (int i=0; i<n; i++) {
- scanf("%lld%lld", &x, &y);
- if (x == 0 && y==0)
- k2++;
- else
- in2.push_back({x, y});
- }
- if (k1 != k2) {
- printf("NIE\n");
- return 0;
- }
- n -= k1;
- if (n == 0) {
- printf("TAK\n");
- return 0;
- }
- for (int i=0; i<1; i++) {
- for (int j=0; j<n; j++) {
- if (spr(in1[i], in2[j])) {
- printf("TAK\n");
- return 0;
- }
- }
- }
- printf("NIE\n");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement