TLE всегда происходит в SBANK SPOJ с использованием Python. Чтобы решить эту проблему, мне нужно отсортировать dict()
, хотя dict()
имеет огромное количество KEYS
(максимум - 100000). Использование функции sorted()
в моем коде не дает никакого эффекта. Есть ли быстрое решение? Спасибо за вашу помощь.
Мой код ниже:
for j in range(n): # n is the number of keys
account = sys.stdin.readline().rstrip()
dic.setdefault(account, 0)
dic[account] += 1
sorted(dic) # **this sort take a lot of time**
EDIT1 : Согласно советам Джастина Пила, я обновляю код ниже, но возвращаю все еще TLE Как я могу это сделать?
import sys
import psyco # import psyco module to speed up
psyco.full()
nCase = int(sys.stdin.readline().split()[0])
for i in range(nCase):
n = int(sys.stdin.readline().split()[0])
dic = dict()
lst = list()
for j in range(n):
account = sys.stdin.readline().rstrip()
dic.setdefault(account, 0)
dic[account] += 1
sys.stdin.readline()
lst = dic.keys() # store keys in list
lst.sort()
for account in lst:
sys.stdout.write('%s %s\n' % (account, dic[account]))