Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <iomanip>
- #include <string>
- #include <algorithm>
- #include <vector>
- using namespace std;
- ifstream in("input.txt");
- ofstream out("output.txt");
- void print_vector(vector <pair<int, int>>& points) {
- for (auto x : points) {
- cout << "(" << x.first << "," << x.second << ") ";
- }
- cout << endl;
- }
- int main(){
- int a;
- cin >> a;
- vector<pair<int, int>> points = { {1, 2}, {3, 4}, {-6, 8}, {0, -3}, {4, -2}, {-3, -3} };
- // удалить все точки не из квадрата со стороной A с центром в начале координат
- points.erase(remove_if(points.begin(), points.end(), [a](const pair<int, int>& point) {
- return point.first < (-a / 2) || point.first >(a / 2) || point.second < (-a / 2) || point.second >(a / 2);
- }), points.end());
- print_vector(points);
- points = { {1, 2}, {3, 4}, {-6, 8}, {0, -3}, {4, -2}, {-3, -3} };
- // подсчитать количество точек, лежащих левее оси y
- int count = count_if(points.begin(), points.end(), [a](const pair<int, int>& point){
- return point.first < 0;
- });
- cout << count << endl;
- points = { {1, 2}, {3, 4}, {-6, 8}, {0, -3}, {4, -2}, {-3, -3}, {-1, -1} };
- // найти самую близкую к началу координат среди точек, лежащих ниже y = - |x|
- auto it = *min_element(points.begin(), points.end(), [](pair<int, int> p1, pair<int, int> p2) {
- return sqrt(p1.first * p1.first + p1.second * p1.second) < sqrt(p2.first * p2.first + p2.second * p2.second);
- });
- cout << "(" << it.first << "," << it.second << ")" << endl;
- points = { {1, 2}, {3, 5}, {-6, 8}, {0, -3}, {4, -2}, {-3, -3}, {-1, -1}, {3, 4} };
- //расположить в порядке приближения к началу координат, при совпадении расстояний упорядочивать по x, при совпадении ещё и x оставлять исходный порядок
- stable_sort(points.begin(), points.end(), [](pair<int, int> p1, pair<int, int> p2) {
- return sqrt(p1.first * p1.first + p1.second * p1.second) < sqrt(p2.first * p2.first + p2.second * p2.second);
- });
- print_vector(points);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement