Advertisement
coloriot

HA_17_C_V2

Aug 1st, 2024
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.58 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. // Структура взята из нашего дерева сортировки
  6. void swap(int &a, int &b) {
  7.     int temp = a;
  8.     a = b;
  9.     b = temp;
  10. }
  11.  
  12. void sift_down(int* heap, int size, int index){
  13.     while (2 * index + 1 < size){
  14.         int j = 2 * index + 1;
  15.         if (j + 1 < size && heap[j] < heap[j + 1]) j++;
  16.         if (heap[index] >= heap[j]) break;
  17.         swap(heap[index], heap[j]);
  18.         index = j;
  19.     }
  20. }
  21.  
  22. void build_heap(int* array, int size){
  23.     for (int i = size / 2 - 1; i >= 0; --i){
  24.         sift_down(array, size, i);
  25.     }
  26. }
  27.  
  28. void heap_sort(int* array, int size){
  29.     build_heap(array, size);
  30.     for (int i = size - 1; i > 0; --i){
  31.         swap(array[0], array[i]);
  32.         sift_down(array, i, 0);
  33.     }
  34. }
  35.  
  36. int main() {
  37.     int N;
  38.     cin >> N;
  39.  
  40.     int* a = new int[N];
  41.     int* b = new int[N];
  42.  
  43.     for (int i = 0; i < N; ++i) {
  44.         cin >> a[i] >> b[i];
  45.     }
  46.  
  47.     // Сортируем массив a и b одновременно по началу отрезков
  48.     heap_sort(a, N);
  49.     heap_sort(b, N);
  50.  
  51.     int nonIntersectingCount = 0;
  52.     int j = 0;
  53.  
  54.     for (int i = 0; i < N; ++i) {
  55.         // Проверяем текущий отрезок с предыдущими отсортированными отрезками
  56.         while (j < i && b[j] < a[i]) {
  57.             j++;
  58.         }
  59.         if (j == i) {
  60.             nonIntersectingCount++;
  61.         }
  62.     }
  63.  
  64.     cout << nonIntersectingCount << endl;
  65.  
  66.     delete[] a;
  67.     delete[] b;
  68.  
  69.     return 0;
  70. }
  71.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement