Код на python не всегда работает верно
я написала код по задаче:
Дан массив a длины n, вы можете сделать не более k
операций следующего типа: выбрать 2
различных элемента в массиве, прибавить 1
к первому и вычесть 1 из второго.
После применения операции все элемента a
должны остаться неотрицательными.
Какой лексикографически минимальный массив можно
получить? Массив xлексикографически меньше чем
массив y, если есть индекс i такой, что
xi<yi, и xj=yjдля всех 1≤j<i. Проще говоря,
для первого такого i, где массивы различны, xi<yi.
Входные данные
В первой строке записано одно целое число
t (1≤t≤20) – количество наборов входных данных.
В первой строке каждого набора входных
данных записаны 2целых числа n и k
(2≤n≤100, 1≤k≤10000) — размер массива
и максимальное количество операций.
Во второй строке каждого набора входных
данных записаны n целых чисел a1, a2, …, an
(0≤ai≤100) — элементы массива a.
Выходные данные
На каждый набор входных данных выведите
лексикографически минимальный массив, который
может получиться из исходного за не более чем k
операций.
Пример
входные данные
2
3 1
3 1 4
2 10
1 0
выходные данные
2 1 5
0 1
Но на некоторых тестах он выдает неверный ответ, мой код:
n=int(input())
for i in range(n):
a, b=map(int, input().split())
s=list(map(int, input().split()))
if s.count(0)==a-1:
print("0 "*(a-1), end="")
print(max(s))
else:
x=0
y=a-1
while s[x]>0 and s[y]>0 and b>0 and s.count(0)<a-1:
s[x]-=1
s[y]+=1
b-=1
if s[x]==0:
x+=1
if s[y]==0:
y-=1
print(*s)
Не знаю что делать, помогите пожалуйста доработать и улучшить код!!!