Advertisement
Josif_tepe

Untitled

Mar 1st, 2021
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.44 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <vector>
  4. #include <queue>
  5. #include <algorithm>
  6. using namespace std;
  7.  
  8. int main()
  9. {
  10.     int n, l;
  11.     cin >> n >> l;
  12.     pair<int, int> p[n];
  13.     for(int i = 0; i < n; i++) {
  14.         cin >> p[i].second >> p[i].first;
  15.     }
  16.    
  17.     int L = 0;
  18.         int R = l;
  19.         int zalepeni = 0;
  20.     for(int i = 0; i < n; i++) {
  21.             int a = p[i].second;
  22.             int b = p[i].first;
  23.             if(R < a) {
  24.                 continue;
  25.             }
  26.             if(b < L) {
  27.                 continue;
  28.             }
  29.             if(a < L and R < b) {
  30.                 continue;
  31.             }
  32.             if(L <= a and b <= R) {
  33.                 zalepeni += 1;
  34.                 continue;
  35.             }
  36.             if(a < L) {
  37.                 int strci = L - a;
  38.                 if(strci < 0) {
  39.                     strci *= -1; // dolzinata mora da e pozitiven broj
  40.                 }
  41.                 int dolzina = b - a;
  42.                 if(dolzina < 0) {
  43.                     dolzina *= -1;
  44.                 }
  45.                 if(strci <= dolzina / 2) {
  46.                     L = a;
  47.                     zalepeni += 1;
  48.                 }
  49.             }
  50.             else if(R < b) {
  51.                 int strci = b - R;
  52.                 if(strci < 0) {
  53.                     strci *= -1;
  54.                 }
  55.                 int dolzina = b - a;
  56.                 if(dolzina < 0) {
  57.                     dolzina *= -1;
  58.                 }
  59.                 if(strci <= dolzina / 2) {
  60.                     R = b;
  61.                     zalepeni += 1;
  62.                 }
  63.             }
  64.         }
  65.     int zalepeni2 = 0;
  66.     sort(p, p + n);
  67.     for(int i = n - 1; i >= 0; i--) {
  68.             int a = p[i].second;
  69.             int b = p[i].first;
  70.             if(R < a) {
  71.                 continue;
  72.             }
  73.             if(b < L) {
  74.                 continue;
  75.             }
  76.             if(a < L and R < b) {
  77.                 continue;
  78.             }
  79.             if(L <= a and b <= R) {
  80.                 zalepeni2 += 1;
  81.                 continue;
  82.             }
  83.             if(a < L) {
  84.                 int strci = L - a;
  85.                 if(strci < 0) {
  86.                     strci *= -1; // dolzinata mora da e pozitiven broj
  87.                 }
  88.                 int dolzina = b - a;
  89.                 if(dolzina < 0) {
  90.                     dolzina *= -1;
  91.                 }
  92.                 if(strci <= dolzina / 2) {
  93.                     L = a;
  94.                     zalepeni2 += 1;
  95.                 }
  96.             }
  97.             else if(R < b) {
  98.                 int strci = b - R;
  99.                 if(strci < 0) {
  100.                     strci *= -1;
  101.                 }
  102.                 int dolzina = b - a;
  103.                 if(dolzina < 0) {
  104.                     dolzina *= -1;
  105.                 }
  106.                 if(strci <= dolzina / 2) {
  107.                     R = b;
  108.                     zalepeni2 += 1;
  109.                 }
  110.             }
  111.         }
  112.     int zalepeni3 = 0;
  113.     for(int i = 0; i < n; i++) {
  114.             int a = p[i].second;
  115.             int b = p[i].first;
  116.             if(R < a) {
  117.                 continue;
  118.             }
  119.             if(b < L) {
  120.                 continue;
  121.             }
  122.             if(a < L and R < b) {
  123.                 continue;
  124.             }
  125.             if(L <= a and b <= R) {
  126.                 zalepeni3 += 1;
  127.                 continue;
  128.             }
  129.             if(a < L) {
  130.                 int strci = L - a;
  131.                 if(strci < 0) {
  132.                     strci *= -1; // dolzinata mora da e pozitiven broj
  133.                 }
  134.                 int dolzina = b - a;
  135.                 if(dolzina < 0) {
  136.                     dolzina *= -1;
  137.                 }
  138.                 if(strci <= dolzina / 2) {
  139.                     L = a;
  140.                     zalepeni3 += 1;
  141.                 }
  142.             }
  143.             else if(R < b) {
  144.                 int strci = b - R;
  145.                 if(strci < 0) {
  146.                     strci *= -1;
  147.                 }
  148.                 int dolzina = b - a;
  149.                 if(dolzina < 0) {
  150.                     dolzina *= -1;
  151.                 }
  152.                 if(strci <= dolzina / 2) {
  153.                     R = b;
  154.                     zalepeni3 += 1;
  155.                 }
  156.             }
  157.         }
  158.    
  159.     cout << max(max(zalepeni, zalepeni2), zalepeni3) << endl;
  160.     return 0;
  161. }
  162. /*
  163.  7 5
  164.      
  165.  2 4
  166. -3 3
  167.  
  168.  
  169.  
  170.  7 10
  171.  1 8
  172.  6 7
  173.  6 7
  174.  -1 6
  175.  2 4
  176.  -3 3
  177.  
  178.  **/
  179.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement