Я пытался решить проблему на Hackerearth . Суть проблемы заключается в следующем:
Суссуту - всемирно известный маг. И недавно он был наделен властью удалять ТОЛЬКО ОДИН элемент из массива. Дан массив A (индекс начинается с 0) с N элементами. Теперь Суссуту МОЖЕТ удалить только тот элемент, который делает сумму ВСЕХ оставшихся элементов в точности делимой на 7. На протяжении всей своей жизни Суссуту был так занят магией c, что никогда не мог ладить с математикой. Ваша задача - помочь Суссуту найти первый индекс массива наименьшего элемента, который он МОЖЕТ удалить.
Ввод : первая строка содержит одно целое число N. Следующая строка содержит N пробела разделенные целые числа A k , 0
Выходные данные : вывести одну строку, содержащую одно целое число, первый индекс массива наименьшего элемента, который он МОЖЕТ удалить и -1, если нет такого элемента, который он мог бы удалить!
Ограничения : 1 5
0 k <10 <sup>9
Вот алгоритм, который я пробовал, но он превышал ограничение по времени в некоторых тестовых случаях:
n = int(input())
A = list(map(int, input().split(' ')))
temp = sorted(A)
for i in range(n):
temp[i] = 0
s = sum(temp)
temp = sorted(A)
if s % 7 == 0:
flag = True
break
flag = False
if flag == True:
print(A.index(temp[i]))
else:
print(-1)
Другой код, который работал нормально, приведен ниже:
n = int(input())
A = list(map(int, input().split(' ')))
S = sum(A)
t = []
for a in A:
if (S - a) % 7 == 0:
t.append(a)
if len(t) == 0:
print(-1)
else:
print(A.index(min(t)))
Может кто-нибудь помочь мне понять, почему 1-й код превысил ограничение времени и почему 2-й код не ?? ??