Advertisement
Guest User

Untitled

a guest
May 21st, 2018
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.90 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. using namespace std;
  5.  
  6. struct Adat
  7. {
  8.     vector<int> kezd;
  9.     vector<int> veg;
  10. };
  11.  
  12. int main()
  13. {
  14.     int n, m;
  15.     cin >> n >> m;
  16.     int hossz = n + m;
  17.  
  18.     Adat a;
  19.  
  20.     int MAX = 0;
  21.  
  22.     for (int i = 0; i < hossz; i++)
  23.     {
  24.         int kezd, veg;
  25.         cin >> kezd >> veg;
  26.         a.kezd.push_back(kezd);
  27.         a.veg.push_back(veg);
  28.         if(MAX < veg)
  29.         {
  30.             MAX = veg;
  31.         }
  32.     }
  33.  
  34.     vector<vector<int>> vec;
  35.     vec.resize(hossz);
  36.     vector<pair<int,int>> result;
  37.     result.resize(hossz);
  38.  
  39.     for (int i = 0; i < hossz; i++)
  40.     {
  41.         vec[i].resize(MAX);
  42.  
  43.         for(int j = 0; j < MAX; j++)
  44.         {
  45.             if(j >= a.kezd[i]-1 && j < a.veg[i])
  46.                 vec[i][j] = 1;
  47.             else if(vec[i][j] != 1)
  48.                 vec[i][j] = 0;
  49.             //cout << vec[i][j] << ' ';
  50.         }
  51.         //cout << endl;
  52.     }
  53.  
  54.     int db = 0;
  55.     int veg = 0;
  56.     int k = 0;
  57.     for (int i = 0; i <= MAX; i++)
  58.     {
  59.             int sum = 0;
  60.         for (int j = 0; j < hossz; j++)
  61.         {
  62.             sum += vec[j][i];
  63.         }
  64.         if(sum == 1)
  65.         {
  66.             db++;
  67.             veg = i + 1;
  68.             result[k].first = veg - db + 1;
  69.             result[k].second = veg;
  70.         }
  71.         else
  72.         {
  73.             //cout << veg-db+1 << " " << veg << endl;
  74.             db = 0;
  75.             veg = 0;
  76.             k++;
  77.         }
  78.     }
  79.  
  80.     int meret = 0;
  81.  
  82.     for (int i = 0; i <= result.size(); i++)
  83.     {
  84.         if(result[i].first != 0 && result[i].second != 0)
  85.         {
  86.             meret++;
  87.         }
  88.     }
  89.  
  90.     cout << meret << endl;
  91.     for (int i = 0; i < k; i++)
  92.     {
  93.         if(result[i].first != 0 && result[i].second != 0)
  94.         {
  95.             cout << result[i].first << " " << result[i].second << endl;
  96.         }
  97.     }
  98.  
  99.     return 0;
  100. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement