Advertisement
coloriot

HA17_C

Jul 26th, 2024
42
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.83 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int main() {
  6.     int N;
  7.     cin >> N;
  8.  
  9.     int* a = new int[N]; // Начало
  10.     int* b = new int[N]; // Конец
  11.  
  12.     for (int i = 0; i < N; ++i) {
  13.         cin >> a[i] >> b[i];
  14.     }
  15.  
  16.     int nonIntersectingCount = 0; // Переменная для подсчета непересекающихся отрезков
  17.  
  18.     // Внешний цикл проходит по каждому отрезку
  19.     for (int i = 0; i < N; ++i) {
  20.         bool intersects = false; // пересекается ли текущий отрезок
  21.  
  22.         // Внутренний цикл проходит по всем отрезкам для проверки пересечений
  23.         for (int j = 0; j < N; ++j) {
  24.             if (i != j) { // Проверяем только разные отрезки
  25.                 // Условие пересечения отрезков
  26.                 if ((a[i] < a[j] && b[i] > b[j]) || // Первый случай пересечения
  27.                     (a[i] > a[j] && b[i] < b[j]) || // Второй случай пересечения
  28.                     (a[i] == a[j] || b[i] == b[j])) { // Третий случай пересечения (одинаковые концы)
  29.                     intersects = true; // Буль пересечения
  30.                     break; // Прерываем внутренний цикл, если найдено пересечение
  31.                 }
  32.             }
  33.         }
  34.         // Если текущий отрезок не пересекается ни с одним другим, увеличиваем счетчик
  35.         if (!intersects) {
  36.             nonIntersectingCount++;
  37.         }
  38.     }
  39.    
  40.     cout << nonIntersectingCount << endl;
  41.  
  42.     delete[] a;
  43.     delete[] b;
  44.  
  45.     return 0;
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement