Advertisement
NikitaShigaev

Untitled

May 1st, 2020
452
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.65 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. #include <cmath>
  5. #include <set>
  6. using namespace std;
  7.  
  8. struct astr {
  9.     double x, y, z;
  10.     unsigned long long ts, uuid;
  11. };
  12.  
  13. bool cmp (astr a, astr b) {   //компаратор - выдаёт true, если два элемента идут в правильном порядке. false - если нет, и их надо менять местами
  14.     return a.ts < b.ts;
  15. }
  16.  
  17. int main()
  18. {
  19.     vector<astr> v;
  20.     set <unsigned long long> s;
  21.     unsigned long long n;
  22.     double x0, y0, z0, r;
  23.     cin >> x0 >> y0 >> z0 >> r;
  24.     cin >> n;
  25.     for (unsigned long long i = 0; i < n; ++i) {
  26.         astr tmp;
  27.         cin >> tmp.uuid >> tmp.ts >> tmp.x >> tmp.y >> tmp.z;
  28.         v.push_back(tmp);
  29.     }
  30.     sort(v.begin(), v.end(), cmp);   // получает два итератора и название компаратора. Сортирует по указанному признаку
  31.     for (unsigned long long i = 0; i < n; ++i) {
  32.         double l = sqrt((v[i].x - x0) * (v[i].x - x0) + (v[i].y - y0) * (v[i].y - y0) + (v[i].z - z0) * (v[i].z - z0));   //ищем расстояние, ничего интеллектуального
  33.         if (l < r) {
  34.             if(s.find(v[i].uuid) == s.end()) {    //ищем элемент во множестве. Если в результате получаем итератор, указывающий на конец - мы не нашли ничего
  35.                 cout << v[i].uuid << '\n';
  36.                 s.insert(v[i].uuid);  //добавляем элемент в множество
  37.             }
  38.         }
  39.     }
  40.     return 0;
  41. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement