Задача
Отсортируйте время согласно заданному критерию
Входные данные
Сначала задано число $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 массива где мы будем хранить время(отдельно часы, минуты, секунды), а также четвертый в котором мы будем хранить все время в одной удобной для нас единице измерения — секундах. Читаем поток ввода и переводим полученные данные, сравниваем их потом сортируем полученные результаты и выводим ответ.
Исправьте заголовок тестов. »
Тесты
» следует писать в текстовом редакторе.
В таблице тестов у Вас неправильно реализован LaTeX.
Добрый вечер, Максим! 1) У Вас, там где «Тесты» виден html код. Также он виден в самих тестах. 2) Думаю стоит использовать такой знак $\leqslant$ вместо такого $\leq.$ 3) У Вас ссылки ведут не туда, куда, наверно, Вы хотели бы. Они ведут на Вашу же публикацию.
Добавьте ключевые слова (метки).
Вы просто привели малоэффективное чужое решение из решебника на github. Напоминаю, что так делать нельзя.
А что нужно?
— Создать структуру или класс для хранения времени.
— В классе описать компаратор — функцию сравнения, которая будет определять какое значение наступило позже.
— Описать массив таких объектов и прочитать их из входного потока.
— Вызвать функцию сортировки компаратором std::sort()