Помогите улучшить код

На егэ по инфе в 26 задании надо будет написать программу, мой вариант вроде работает, но выглядит ужасно. Можете подсказать как код можно улучшить и сделать красивее. Задача под которую писал код :решу егэ

f = open("26_demo.txt","r");
s = 0
users = 0
arr = []
usersdata=0
maxusers=0
bsize=0
elem = ''
num_elem=0
for line in f:
    x = line.split()
    if len(x) == 2:
        s = x[0]
        users = x[1]
    else:
        elem = x[0]
        arr.append(int(elem))
arr.sort()

for i in range(len(arr)):
    if (usersdata+int(arr[i]))<=int(s):
        usersdata+=int(arr[i])
        maxusers+=1
    else:
        num_elem = i-1
        break
data = 0
bp=True
for k in range(num_elem):
    if bp == False:
        break
    for n in range(num_elem+1,len(arr)):
        data = usersdata-int(arr[num_elem-k])
        data+=arr[n]
        if data == int(s):
            bsize = arr[n]
            bp=False
            break
print(maxusers,bsize)

Ответы (1 шт):

Автор решения: m_ocean

Ну на :) Почистил, что смог:

arr = []
usersdata = 0
maxusers = 0

# Нет нужды заранее определять эти переменные:
# users = 0
# s = 0
# bsize = 0
# elem = ''
# num_elem = 0

# Контекстный менеджер автоматически закрывает файл, чего ты, кстати, не сделал:
with open("demo.txt", "r") as f:
    for line in f:
        x = line.split()
        if len(x) == 2:
            s = x[0]
            users = x[1]
        else:
            elem = x[0]
            arr.append(int(elem))

arr.sort()

for i, item in enumerate(arr):  # enumerate – классная функция!
    if (usersdata + int(item)) <= int(s):
        usersdata += int(item)
        maxusers += 1
    else:
        num_elem = i-1
        break

# Дальше ничего не придумал:
data = 0
bp = True
for k in range(num_elem):
    if bp == False:
        break
    for n in range(num_elem+1, len(arr)):
        data = usersdata-int(arr[num_elem-k])
        data += arr[n]
        if data == int(s):
            bsize = arr[n]
            bp = False
            break
→ Ссылка