Форум » Массивы, сортировка, работа с файлами » Неверный ответ в задачке 2836 » Ответить

Неверный ответ в задачке 2836

VectorASD: Есть единственная тема по ней: http://egekp.unoforum.pro/?1-15-0-00000085-000-0-0-1607357126 но она не подходит. Мой ответ: 5931 882 Их ответ: 5931 800 Самое забавное, что они смогли просчитать верно 5931, но при этом забыли про последние 32 груза, что там самый тяжёлый весит 882. Вот моё кодище: [pre2] def Loader4(Name): with open(GPath + Name) as file: N, K = map(int, file.readline().split(" ")) Arr = [tuple(map(int, file.readline().split(" "))) for i in range(N)] Arr.sort() #Некоторые бы догадались, что это не первая задача из 26 номеров, так что данная сортировка только в этой подзадаче не имеет смысла return K, Arr def Z2836(): K, Arr = Loader4("26-k6.txt") Dict = {} for i, j in Arr: ji = j / i try: try: Dict[ji][ i].append(j) except KeyError: Dict[ji][ i] = [j] except KeyError: Dict[ji] = {i: [j]} Keys = sorted(Dict.keys()) Mass = Max = 0 for Key in Keys: Pack = Dict[Key] print(Key, K) Keys2 = sorted(Pack.keys())[::-1] for i in Keys2: j = Pack[ i] print(" ", i, j) for k in j: Mass += i Max = max(Max, k) K -= 1 if K == 0: print(Mass, Max) return Z2836() [/pre2] Сам прогу пилил ;'-} Вывод в консоли, свои комменты написал после решётки '#' [pre2] #Первые 68 грузов: 8.0 100 100 [800] #Вот откуда они взяли ответ -_- но это же не верно!!! 94 [752, 752] 93 [744, 744] 92 [736] 91 [728] 89 [712] 88 [704] 86 [688, 688] 81 [648] 78 [624] ... 15 [120, 120] 12 [96] 11 [88, 88] #Остальные 32 груза: 9.0 32 98 [882, 882] #Вот откуда взял я ответ! Их же пример берёт максимальную массу НЕ из самых дешёвых грузов! Так и тут!!! 95 [855] 93 [837] 88 [792] 87 [783] 86 [774] 84 [756] 83 [747] 82 [738] 81 [729] ... 53 [477] 52 [468] 49 [441] 5931 882 [/pre2]

Ответов - 5

Поляков: Обратите внимание на то, что нужно записать в ответе: "Запишите в ответе два числа – сначала суммарный вес угля в отправленных пакетах, затем стоимость самого тяжёлого отправленного пакета."

VectorASD: Разве 882 не тяжелее 800? В том то и дело, что суммарный вес я правильно высчитал, тогда почему автор задачки не в состоянии был посмотреть на то, что там есть пакеты стоимостью 882, 882, 855 и 837? Какое условие блокирует высчет в этом месте, если в примере задачки самый тяжёлый был не из самых дешёвых?

Поляков: VectorASD пишет: Разве 882 не тяжелее 800? Это стоимость. А их массы - 98 и 100 соответственно.


VectorASD: А всё, пардон. Пример задачки https://kpolyakov.spb.ru/school/ege/gen.php?action=viewTopic&topicId=2836 не расчитан был на такое :/ Плохо было делать, чтобы и стоимость и масса были максимальными одного и того же груза в примере

VectorASD: Вот теперь всё хорошо :S [pre2] GPath = "" #__file__.rsplit("/", 1)[0] + "/" #В случае QPython3 (андроидский релиз питона) приходится высчитывать путь до директории скрипта -_- def Loader4(Name): with open(GPath + Name) as file: N, K = map(int, file.readline().split(" ")) Arr = [tuple(map(int, file.readline().split(" "))) for i in range(N)] Arr.sort() return K, Arr def Z2836(): K, Arr = Loader4("26-k6.txt") Dict = {} for i, j in Arr: ji = j / i try: try: Dict[ji][ i].append(j) except KeyError: Dict[ji][ i] = [j] except KeyError: Dict[ji] = {i: [j]} Keys = sorted(Dict.keys()) Mass = Max = MaxS = 0 for Key in Keys: Pack = Dict[Key] print(Key, K) Keys2 = sorted(Pack.keys())[::-1] for i in Keys2: j = Pack[ i] print(" ", i, j) if i > Max: Max, MaxS = i, j[0] for k in j: Mass += i K -= 1 if K == 0: print(Mass, MaxS) return Z2836() [/pre2] Как закрыть тему?) Типо чтоб в неё нельзя было писать



полная версия страницы