Я не знаю, что не так с stdout в интерактивном задании, система тестирования говорит, что превышен предел бездействия - PullRequest
1 голос
/ 05 апреля 2020

Interactor дает строки с ответами, задаваемыми программой на новой строке, но есть некоторые проблемы с гриппом sh. Это не работает на тестовом сервере, но на моем компьютере все в порядке

    from sys import stdin, stdout
    islier = False
    print('? 1')
    stdout.flush()
    t = int(stdin.read().rstrip('\n'))
    if t == 1:
        islier = True
    l = 1
    r = 100000
    while l != r:
        print('? ' + str((l + r) // 2))
        stdout.flush()
        t = int(stdin.read().rstrip('\n'))
        if islier:
            t = abs(t - 1)
        if t == 1:
            r = (l + r) // 2
        else:
            l = (l + r) // 2
    print('! ' + str((l + r) // 2))

1 Ответ

0 голосов
/ 05 апреля 2020

Возможно, проблема не в гриппе sh. На моей машине запуск sys.stdin.read() блокирует систему, что может привести к ошибке превышения предела простоя. Используйте sys.stdin.readline(), так как это вернет момент, когда пользователь вводит ввод:

t = int(stdin.readline().rstrip('\n'))
...