Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
Counting Sort - O(n + k)
Counting Sort O(n + k) O(n + k) O(n + k) O(k) ✅ Маленький диапазон значений
def counting_sort(nums):
count = defaultdict(int)
minVal, maxVal = min(nums), max(nums)
for val in nums:
count[val] += 1
index = 0
for val in range(minVal, maxVal + 1):
while count[val] > 0:
nums[index] = val
index += 1
count[val] -= 1
from collections import defaultdict
def stable_counting_sort(nums):
if not nums:
return nums
# 1. Считаем сколько раз встретилось каждое число
count = defaultdict(int)
for val in nums:
count[val] += 1
# 2. Получаем отсортированные ключи
sorted_keys = sorted(count.keys())
# 3. Считаем префиксные суммы (позиции для стабильности)
positions = {}
total = 0
for key in sorted_keys:
positions[key] = total
total += count[key]
# 4. Создаём массив результата
output = [0] * len(nums)
for val in nums:
index = positions[val]
output[index] = val
positions[val] += 1 # увеличиваем позицию для следующего одинакового элемента
return output
import itertools
import time
n = int(input())
a = []
sm = 0
for i in range(n):
a.append(list(map(int, input().split())))
a[i].sort()
sm += a[i][0] + a[i][1]
mx = 0
a.sort()
for i in itertools.product([0, 1], repeat=n - 1):
if time.process_time() > 0.75:
break
s = 0
for j in range(n):
if j >= 1:
s += a[j][i[j - 1]]
else:
s += a[j][0]
s2 = sm - s
if s % 3 == 0 and s > mx:
mx = s
if s2 > mx and s2 % 3 == 0:
mx = s2
print(mx)
Задача с ЕГЭ: "Даны пары (A[i][0], A[i][1]), в каждой паре нужно выбрать одно число, при этом сумма выбранных чисел должна делится на 3, среди таких сумм найти максимальную"
Автор данного кода не справился нормально соптимизировать решение, поэтому написал какую-то х**ню, результат видите выше (особенно строчка 13)
Оно зашло на тестах, где n <= 20
n = int(input())
a = n
i = 0
last_digit = 0
total = 0
while n != 0:
i += 1
n = n // 10
while a != 0:
last_digit = (a % 10) * 10 ** i
total += last_digit
i = i - 1
a = a // 10
print(total // 10)
Дано натуральное число. Напишите программу, которая меняет порядок цифр числа на обратный. В той Вселенной, откуда пришел этот код, end просто не существует...
n = input().strip('#')
n = int(n)
for _ in range(n):
s = input()
if '#' not in s:
s = s.rstrip()
print(s)
else:
i = 0
count = 0
while s[i].isspace():
count += 1
i += 1
s = s.strip()
l = s.split(' ')
while True:
item = l.pop(-1)
if '#' in item:
break
if count != 0:
l.insert(0, ' '*(count - 1))
count = 0
m = ' '.join(l)
print(m.rstrip())
На вход программе подаётся натуральное число в формате #n, а затем n строк с кодом, в котором нужно удалить все комментарии и сохранить всё остальное как есть. Зачем вся эта хрень со списками, когда можно решить в несколько строк методами строк, простите за каламбур!
from gremllm import Gremllm
# Be sure to tell your gremllm what sort of thing it is
counter = Gremllm('counter')
counter.value = 5
counter.increment()
print(counter.value) # 6?
print(counter.to_roman_numerals()) # VI?