#include <cstdio>
#include <vector> // чтобы использовать vector <int>
#include <algorithm> // чтобы использовать sort()
#include <functional> // чтобы использовать greater<int>
using namespace std;
// inline - чтобы быстрее работало
inline bool myLess( int a, int b ) // функция сравнивает 2 int-а, возвращает 1 (true), если "a < b"
{
if (a % 3 == b % 3)
return a < b;
return a % 3 < b % 3;
}
template <class T> void Out( int n, T a );
int main()
{
int a[] = {1, 3, 5, 2, 4}; // массив
int len = sizeof(a) / sizeof(a[0]); // посчитать длину массива (работает только для массивов, для int* НЕ работает)
vector <int> b(len); // вектор из len элементов
copy(a, a + len, b.begin()); // создать вектор b из массива a
Out(len, a);
Out(len, b.begin());
sort(a, a + len); // сортировать элементы массива a [0..len-1]
sort(b.begin(), b.end()); // сортировать весь вектор b (от begin до end)
sort(a, a + len, greater<int>()); // сортировать по убыванию
sort(a, a + len, myLess); // myLess(a, b) == (a < b)
return 0;
}
template <class T> void Out( int n, T a )
{
printf("%d:", n);
while (n--)
printf(" %d", *a++);
puts("");
}