Advertisement
martarubtsova

Untitled

Feb 18th, 2018
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.86 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include <string>
  3. #include <algorithm>
  4. #include <vector>
  5. #include <iostream>
  6.  
  7. using namespace std;
  8.  
  9. int main()
  10. {
  11.     int n, x, y, k = 0, m, bgn = -10000000, p, count = 0, end;
  12.     cin >> n;
  13.     vector < pair < int, int > > a;
  14.     vector < pair <int, int > > d;
  15.  
  16.     for (int i = 0; i < n; i++)
  17.     {
  18.         cin >> x >> y;
  19.         a.push_back(make_pair(x, 0));
  20.         a.push_back(make_pair(y, 1));
  21.     }
  22.     cin >> m;
  23.     vector <int> point(m);
  24.     for (int i = 0; i < m; i++)
  25.         cin >> point[i];
  26.     sort(a.begin(), a.end());
  27.     cin >> p;
  28.     if (p > 0)
  29.     {
  30.         for (int i = 0; i < int(a.size()); i++)
  31.             if (a[i].second == 0)
  32.             {
  33.                 if (k == p)
  34.                     d.push_back(make_pair(bgn, a[i].first - 1));
  35.                 k++;
  36.                 if (k == p)
  37.                     bgn = a[i].first;
  38.             }
  39.             else
  40.             {
  41.                 if (k == p)
  42.                 {
  43.                     if (i + 1 == int(a.size()) || a[i + 1].first > a[i].first)
  44.                         end = a[i].first;
  45.                     else
  46.                         end = a[i].first - 1;
  47.                     d.push_back(make_pair(bgn, a[i].first));
  48.                 }
  49.                 k--;
  50.             }
  51.         for (int i = 0; i < m; i++)
  52.             for (int j = 0; j < int(d.size()); j++)
  53.                 if (point[i] >= d[j].first && point[i] <= d[j].second)
  54.                 {
  55.                     count++;
  56.                     break;
  57.                 }
  58.     }
  59.     else
  60.     {
  61.         bool flag = true;
  62.         d.push_back(make_pair(-100000000, a[0].first));
  63.         for (int i = 0; i < int(a.size()); i++)
  64.             if (a[i].second == 1)
  65.             {
  66.                 k--;
  67.                 if (k == 0)
  68.                     if (i + 1 == int(a.size()) || a[i + 1].first > a[i].first + 1)
  69.                     {
  70.                         bgn = a[i].first + 1;
  71.                         flag = true;
  72.                     }
  73.                     else
  74.                         flag = false;
  75.             }
  76.             else
  77.             {
  78.                 if (k == 0 && i > 1 && flag)
  79.                     d.push_back(make_pair(bgn, a[i].first - 1));
  80.                 k++;
  81.             }
  82.         d.push_back(make_pair(a[int(a.size()) - 1].first, 100000000));
  83.         for (int i = 0; i, m; i++)
  84.             for (int j = 0; j < int(d.size()); j++)
  85.                 if (point[i] >= d[j].first && point[i] <= d[j].second)
  86.                 {
  87.                     count++;
  88.                     break;
  89.                 }
  90.     }
  91.     cout << count;
  92. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement