Форум сайта python.su
crchemistда, я кстати думал об этом, но ты думаешь это быстрее работать будет чем, через StringIO?
можна швидше.
Замість
fin = StringIO(sys.stdin.read())
rinput = fin.readline
і багатьох викликів rinput()
можна:
lines = sys.stdin.readlines()
for line in lines:
……..
Офлайн
я дивився на цю задачку
http://www.spoj.pl/ranks/TEST/lang=PYTH
Zhang Yunqiao accepted 0.00 3.7M PYTH
Офлайн
не вышло с такой же скоростью?
там много удивительного есть)
кстати, время на одном и том же коде постоянно меняется
Офлайн
crchemistвот этот код выдал 0.2
я дивився на цю задачку
http://www.spoj.pl/ranks/TEST/lang=PYTH
Zhang Yunqiao accepted 0.00 3.7M PYTH
import sys
while True:
x = sys.stdin.readline()
if x[:2] == '42': break
sys.stdout.write(x)
import sys
while True:
x = sys.stdin.readline()
if x[:2] == '42': break
print x
Отредактировано (Июль 24, 2008 12:49:06)
Офлайн
0.1
import sys
def main():
data = sys.stdin.read()
pos = data.rfind('42\n')
sys.stdout.write(data[:pos if pos != -1 else len(data)])
main()
Офлайн
интересно
а у меня такой код выдает 0.3
import sys
data = sys.stdin.read()
sys.stdout.write(data[:data.rfind('42\n')])
Офлайн
izekiaта, але є проблема. треба зберігати в окремій змінній індекс в списку
да, я кстати думал об этом, но ты думаешь это быстрее работать будет чем, через StringIO?
import psyco;
import sys
from cStringIO import StringIO
import os
fin = sys.stdin.readlines()
fout = StringIO()
routput = fout.write
def main():
cache = dict()
for x in range(100):
cache[str(x)] = x
q = 2
for i in range(int(fin[0])):
prev_line = [cache[fin[q].rstrip()]]
last_line = []
for j in range(1, int(fin[q - 1])):
q += 1
last_line = [cache[x] for x in fin[q].split()]
last_line[0] += prev_line[0]
for z in xrange(1, len(prev_line)):
plx = prev_line[z]
last_line[z] += prev_line[z - 1] <= plx and plx or prev_line[z - 1]
last_line[-1] += prev_line[len(prev_line) - 1]
prev_line = last_line
routput('%i\n'%_max(last_line) or prev_line[0])
q += 2
fout.seek(0)
os.write(1, fout.read())
psyco.bind(main)
def _max(l):
m = l[0]
for c in l:
m = c if m < c else m
return m
psyco.bind(_max)
main()
Офлайн
а ты по-русски вообще не умеешь?
просто я тебя плохо понимаю
Офлайн
OFF: переходите оба на английский ;)
Офлайн
shiza
тогда остальные ничего не поймут - тоже нехорошо ;)
Офлайн