Задача
Отсортируйте время согласно заданному критерию
Входные данные
Сначала задано число $n\, \left ( 1\leqslant n\leqslant 100 \right )$, а затем n моментов времени. Каждый момент времени задается 3 целыми числами — часы (от 0 до 23), минуты (от 0 до 60) и секунды (от 0 до 60)
Выходные данные
Выведите моменты времени, упорядоченные в порядке неубывания (момент времени также выводится в виде трех чисел, ведущие нули выводить не нужно)
Тесты
№ | Входные данные | Выходные данные |
1 | [latex]\begin{matrix} 4 & & \\ 10 &20 &30 \\ 7 &30 &00 \\ 23&59 &59 \\ 13&30 &30 \end{matrix}[/latex] |
[latex]\begin{matrix} 7 & 30 &00 \\ 10&20 &30 \\ 13&30 &30 \\ 23& 59 & 59 \end{matrix}[/latex] |
2 | $\begin{matrix} 6\\ 12 &55 &59 \\ 8 &33 &34 \\ 6 &56 &46 \\ 10 &23 &52 \\ 3 &20 &00 \\ 19 &31 &0\\ 10&23&52 \end{matrix}$ |
$\begin{matrix} 3 &20 &0 \\ 6 &56 &46 \\ 8 &33 &34 \\ 10 &23 &52 \\ 12 &55 &59 \\ 19 &31 &0 \end{matrix}$ |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
#include <iostream> #include <algorithm> using namespace std; int main() { int hours[100]; int mins[100]; int secs[100]; int all_time[100]; int n; cin >> n; for (int i = 0; i < n; i++) { cin >> hours[i] >> mins[i] >> secs[i]; all_time[i] = hours[i] * 3600 + mins[i] * 60 + secs[i]; } for (int i = 0; i < n; i++) { for (int j = i + 1; j < n; j++) { if (all_time[i] > all_time[j]) { swap(hours[i], hours[j]); swap(mins[i], mins[j]); swap(secs[i], secs[j]); swap(all_time[i], all_time[j]); } } } for (int i = 0; i < n; i++) cout << hours[i] << " " << mins[i] << " " << secs[i] << endl; } |
Решение
Создадим 4 массива где мы будем хранить время(отдельно часы, минуты, секунды), а также четвертый в котором мы будем хранить все время в одной удобной для нас единице измерения — секундах. Читаем поток ввода и переводим полученные данные, сравниваем их потом сортируем полученные результаты и выводим ответ.