Школа программиста

Забыли пароль?
[задачи] [курсы] [олимпиады] [регистрация]
Логин:   Пароль:    
Скрыть меню
О школе
Правила
Олимпиады
Фотоальбом
Гостевая
Форум
Архив олимпиад
Архив задач
Состояние системы
Рейтинг
Курсы
Новичкам
Работа в системе
Курсы ККДП
Дистрибутивы
Статьи
Ссылки


 
[Вернуться к задаче]   1 2
  1  Кахрамон, 28 января 2026 г. 8:05:53
     import sys def solve(): input_data = sys.stdin.read().split() if not input_data: return n = int(input_data[0]) items = [] unit_base = { 'g': 10**6, 'p': 16380 * 10**6, 't': 10**12 } prefixes = { 'm': 10**3, 'k': 10**9, 'M': 10**12, 'G': 10**15 } idx = 1 for i in range(n): val = int(input_data[idx]) unit_str = input_data[idx+1] if len(unit_str) == 1: total_mcg = val * unit_base[unit_str] elif unit_str == 'mg': total_mcg = val * 10**3 else: p = unit_str[0] b = unit_str[1:] total_mcg = val * prefixes[p] * (unit_base[b] // 10**6) items.append({ 'mcg': total_mcg, 'orig': f"{val} {unit_str}", 'pos': i }) idx += 2 items.sort(key=lambda x: (x['mcg'], x['pos'])) for item in items
  2  Шохрух Нарзуллаев, 12 июня 2025 г. 12:18:14
     Решил не используя ни double, ни int128, а просто с int-ом =).
  3  Аташев Аташ, 28 мая 2024 г. 12:16:07
     Решил используя double.Если бы там было а=1...1000000000 с double-ом решить было бы невозможно.
  4  Лужков Артем Олегович, 01 января 2024 г. 19:45:12
     __int128 творит чудеса! :)
  5  Арсланбек Зулунов Фарходович, 28 мая 2021 г. 21:02:48
     я не буду длинку писать. Спасибо Ивану Михновичу за __int128. Я тут решаю задачи на сортировки, а не на длинки.
  6  Волков Демьян Сергеевич, 09 января 2020 г. 0:13:43
     Те, кто пишет на Python'е, коэффициент 10^-3=1/1000 (для мили-) выражайте как fractions.Fraction(1, 1000), предварительно импортировав модуль fractions (иначе не пройдёт из-за низкой точности вещественных чисел)
  7  Ерёменко Владислав Владиславович, 28 октября 2019 г. 20:32:11
     Дам совет: не пытайтесь работать с вещественными числами, т.к. они очень странно делятся и умножаются. Из-за этого у них появляются различные хвостики, что мешают их сравнению.
  8  Иван Михнович, 19 октября 2019 г. 16:18:45
     В GCC есть встроенный нестандартный тип __int128, который позволяет решить эту задачу безо всяких хитростей и без длинной арифметики, просто переведя все массы в миллиграммы. Чтобы избежать необходимости выводить тип на экран достаточно запомнить строковое представление каждой массы.
  9  Касым-Жомарт Кемелевич Токаев, 25 апреля 2019 г. 21:08:37
     Осторожно,при переводе в мг вы можете выйти за пределы long long,10^4*10^6*10^9*10^3
  10  Орёл Даниил Юрьевич, 15 ноября 2017 г. 9:36:44
     Уважаемый администратор, если вы тут бываете, почему такой высокий рейтинг сложности и низкая решаемость?
Тут же просто реализация, плюс в условии есть интересная подсказка.
  11  Франц Фердинанд, 05 ноября 2017 г. 9:28:47
     Перевод в миллиграммы решает всё.
  12  Юсупов Темиржан Нурланович, 24 мая 2016 г. 14:58:59
     Попробуйте tuple, полезный шаблон
  13  Зыков Алексей Александрович, 01 мая 2016 г. 17:52:01
     Если не выходит, можно похимичить и для каждого веса сохранять его номер в позиции. И если 2 массы равны, то сравнивать их изначальные места в файле.
  14  Дестр Де, 11 января 2016 г. 12:51:48
     У кого вдруг не получается, подсказка: проходит самая элементарная сортировка пузырьком, только надо аккуратно учесть все единицы измерения, ну и подумать, что именно сортировать и что именно выводить в качестве ответа.
  15  Азрет Кенжалиев, 18 декабря 2014 г. 9:39:25
     Для тех кто пишет на C++ подсказка: используйте stable_sort (<algorithm>), он поможет отсортировать по позициям.
  16  Слава роботам, 06 декабря 2011 г. 14:13:53
     я почему-то думал что сортировка выбором не меняет порядок элементов, но потом до меня дошло, что это на самом деле не так. сделал пузырьком (вставками я думаю тоже можно было), всё стало окей.
  17  Гамисония <Censored> Эльдар, 26 июля 2011 г. 11:50:20
     решил задачу переводя всё в милиграммы и храня эти значения в строке(что бы не было длинки)
  18  Хамитбеков Мади, 09 февраля 2011 г. 9:18:19
     на тест:

15
1 mg
1 g
1 kg
1 Mg
1 mp
1 p
1 kp
1 Mp
1 Gp
1 mt
1 t
1 kt
1 Gg
1 Mt
1 Gt
ответ:

1 mg
1 g
1 mp
1 kg
1 mt
1 p
1 Mg
1 t
1 kp
1 kt
1 Gg
1 Mp
1 Mt
1 Gp
1 Gt
?
     Да.
  19  Хамитбеков Мади, 09 февраля 2011 г. 8:42:19
     перевожу все в миллиграммы =)
  20  A.S., 01 февраля 2011 г. 5:06:30
     Что-то мне подсказывает, что там очень длинные вещественные числа и знак "<" выполняется неправильно. Подскажите пожалуйста, как можно сравнивать такие числа?
 1 2

Чтобы оставить сообщение необходимо зарегистрироваться и авторизоваться!

Красноярский краевой Дворец пионеров, (c)2006 - 2026, ИНН 246305493507, E-mail: admin@acmp.ru