SaveText.Ru

Без имени
  1. #include <iostream>
  2. using namespace std;
  3. long long orient[100002];
  4. long long x[100002];
  5. long long y[100002];
  6. int countpos = 0;
  7. int countnepos = 0;
  8. int main() {
  9.         int N;
  10.         cin >> N;
  11.         for (int i = 0; i < N; i++) {
  12.                 cin >> x[i] >> y[i];
  13.         }
  14.         for (int i = 0; i < N - 2; i++) {
  15.                 orient[i] = (x[i] * y[i + 1] + x[i + 1] * y[i + 2] + x[i + 2] * y[i]) - (y[i] * x[i + 1] + y[i + 1] * x[i + 2] + y[i + 2] * x[i]);
  16.         }
  17.         orient[N - 2] = (x[N - 2] * y[N - 1] + x[N - 1] * y[0] + x[0] * y[N - 2]) - (y[N - 2] * x[N - 1] + y[N - 1] * x[0] + y[0] * x[N - 2]);
  18.         orient[N - 1] = (x[N - 1] * y[0] + x[0] * y[1] + x[1] * y[N - 1]) - (y[N - 1] * x[0] + y[0] * x[1] + y[1] * x[N - 1]);
  19.         for (int i = 0; i < N; i++) {
  20.                 if (orient[i] >= 0) countpos++;
  21.                 if (orient[i] <= 0) countnepos++;
  22.         }
  23. //      cout << "COUNT POS : " << countpos << endl;
  24.         //cout << "COUNT NE POS : " << countnepos << endl;
  25.         if (countpos == N || countnepos == N) {
  26.                 cout << "YES"; return 0;
  27.         }
  28.         cout << "NO";
  29. }

Share with your friends:

Print