Advertisement
myloyo

algorithm 1

Jun 6th, 2023 (edited)
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.33 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <iomanip>
  4. #include <string>
  5. #include <algorithm>
  6. #include <vector>
  7.  
  8. using namespace std;
  9. ifstream in("input.txt");
  10. ofstream out("output.txt");
  11.  
  12. void print_vector(vector <pair<int, int>>& points) {
  13.     for (auto x : points) {
  14.         cout << "(" << x.first << "," << x.second << ") ";
  15.     }
  16.     cout << endl;
  17. }
  18. int main(){
  19.     int a;
  20.     cin >> a;
  21.     vector<pair<int, int>> points = { {1, 2}, {3, 4}, {-6, 8}, {0, -3}, {4, -2}, {-3, -3} };
  22.  
  23.     // удалить все точки не из квадрата со стороной A с центром в начале координат
  24.     points.erase(remove_if(points.begin(), points.end(), [a](const pair<int, int>& point) {
  25.         return point.first < (-a / 2) ||  point.first >(a / 2) || point.second < (-a / 2) || point.second >(a / 2);
  26.         }), points.end());
  27.     print_vector(points);
  28.  
  29.  
  30.     points = { {1, 2}, {3, 4}, {-6, 8}, {0, -3}, {4, -2}, {-3, -3} };
  31.     // подсчитать количество точек, лежащих левее оси y
  32.     int count = count_if(points.begin(), points.end(), [a](const pair<int, int>& point){
  33.         return point.first < 0;
  34.     });
  35.     cout << count << endl;
  36.  
  37.  
  38.     points = { {1, 2}, {3, 4}, {-6, 8}, {0, -3}, {4, -2}, {-3, -3}, {-1, -1} };
  39.     // найти самую близкую к началу координат среди точек, лежащих ниже y = - |x|
  40.     auto it = *min_element(points.begin(), points.end(), [](pair<int, int> p1, pair<int, int> p2) {
  41.         return sqrt(p1.first * p1.first + p1.second * p1.second) < sqrt(p2.first * p2.first + p2.second * p2.second);
  42.      });
  43.     cout << "(" << it.first << "," << it.second << ")" << endl;
  44.  
  45.     points = { {1, 2}, {3, 5}, {-6, 8}, {0, -3}, {4, -2}, {-3, -3}, {-1, -1}, {3, 4} };
  46.     //расположить в порядке приближения к началу координат, при совпадении расстояний упорядочивать по x, при совпадении ещё и x оставлять исходный порядок
  47.     stable_sort(points.begin(), points.end(), [](pair<int, int> p1, pair<int, int> p2) {
  48.         return sqrt(p1.first * p1.first + p1.second * p1.second) < sqrt(p2.first * p2.first + p2.second * p2.second);
  49.     });
  50.     print_vector(points);
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement