Augenbrauen

Mucha 5

Jan 4th, 2018
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.35 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.                      
  3. using namespace std;
  4. #define endl '\n'
  5.  
  6. struct Wektor
  7. {
  8.     int x, y;
  9. };
  10.  
  11. Wektor operator- (Wektor &a, Wektor &b)
  12. {
  13.     Wektor wynik;
  14.     wynik.x = a.x - b.x;
  15.     wynik.y = a.y - b.y;
  16.     return wynik;
  17. }
  18.  
  19. long long operator* (Wektor &a, Wektor &b)
  20. {
  21.    return (long long)(a.x) * (b.y) - (long long)(a.y) * (b.x);    
  22. }
  23.  
  24. long long length_squared(Wektor &w)
  25. {
  26.     return  (long long)(w.x)*w.x + (long long)(w.y)*w.y;
  27. }
  28.  
  29. int main()
  30. {
  31.     ios_base::sync_with_stdio(0);
  32.     cin.tie(0);
  33.  
  34.     int t;
  35.     cin >> t;
  36.     for(int i = 0; i < t; ++i)
  37.     {
  38.         int n;
  39.         cin >> n;
  40.         vector<Wektor> punkt(n);
  41.         for(Wektor &x : punkt)
  42.             cin >> x.x >> x.y;
  43.         vector<Wektor> odcinek;
  44.         for(int j = 1; j < n; ++j)
  45.             odcinek.emplace_back(punkt[j] - punkt[j - 1]);
  46.         for(int j = 1; j < n - 1; ++j)
  47.         {
  48.             if(odcinek[j - 1] * odcinek[j] > 0 || (odcinek[j - 1] * odcinek[j] == 0 && length_squered(odcinek[j - 1] > length_squered(odcinek[j - 1] + odcinek[j]))))
  49.             {
  50.                 cout << "NIE" << endl;
  51.                 break;
  52.             }  
  53.             else
  54.             {
  55.                 if(j == n - 2)
  56.                     cout << "TAK" << endl;
  57.             }
  58.         }
  59.        
  60.  
  61.     }
  62.  
  63.  
  64.     return 0;
  65. }
Advertisement
Add Comment
Please, Sign In to add comment