Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <algorithm>
- #include <cmath>
- #include <set>
- using namespace std;
- struct astr {
- double x, y, z;
- unsigned long long ts, uuid;
- };
- bool cmp (astr a, astr b) { //компаратор - выдаёт true, если два элемента идут в правильном порядке. false - если нет, и их надо менять местами
- return a.ts < b.ts;
- }
- int main()
- {
- vector<astr> v;
- set <unsigned long long> s;
- unsigned long long n;
- double x0, y0, z0, r;
- cin >> x0 >> y0 >> z0 >> r;
- cin >> n;
- for (unsigned long long i = 0; i < n; ++i) {
- astr tmp;
- cin >> tmp.uuid >> tmp.ts >> tmp.x >> tmp.y >> tmp.z;
- v.push_back(tmp);
- }
- sort(v.begin(), v.end(), cmp); // получает два итератора и название компаратора. Сортирует по указанному признаку
- for (unsigned long long i = 0; i < n; ++i) {
- 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)); //ищем расстояние, ничего интеллектуального
- if (l < r) {
- if(s.find(v[i].uuid) == s.end()) { //ищем элемент во множестве. Если в результате получаем итератор, указывающий на конец - мы не нашли ничего
- cout << v[i].uuid << '\n';
- s.insert(v[i].uuid); //добавляем элемент в множество
- }
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement