Advertisement
Malinovsky239

struct (#4)

Nov 13th, 2011
178
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.34 KB | None | 0 0
  1. #include <cstdio>
  2. #include <algorithm>
  3.  
  4. using namespace std;
  5.  
  6. struct vect
  7. {
  8.     int x, y;
  9.  
  10.     vect() {}
  11.  
  12.     vect(int a, int b)
  13.     {
  14.         x = a, y = b;
  15.     }
  16.  
  17.     void read()
  18.     {
  19.         scanf("%d %d", &x, &y);
  20.     }
  21. };
  22.  
  23. // определеим функцию для сравнения двух переменных нового типа
  24. // для того, чтобы корректно работала сортировка по возрастанию, нужно, чтобы она возвращала true, тогда и только тогда, когда первый аргумент строго меньше второго
  25.  
  26. bool compare(vect a, vect b)
  27. {
  28.     if (a.x == b.x)
  29.         return a.y < b.y;
  30.     return a.x < b.x;  
  31.  
  32.     // такая функция позволяет отсортировать все векторы по x, а при равенстве - по y
  33. }
  34.  
  35. const int N = int(1e5);
  36. vect points[N];
  37.  
  38. int main()
  39. {
  40.     int n;
  41.     scanf("%d", &n);
  42.     for (int i = 0; i < n; i++)
  43.         points[i].read();  
  44.  
  45.     sort(points, points + n, compare);
  46.     // отличие от обычной сортировки - третий аргумент, это имя функции, которая будет заменять знак "меньше" (главное - не забыть, что имя нужно писать без скобок)
  47.  
  48.     return 0;
  49. }
  50.  
  51.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement