2020/03/04

[zerojudge] e080: read and write

import sys

mx = 200000  
# 設定每次讀取的長度,請自行調整。
# 設太大會 MLE 太小會 TLE
sp = 0
# space 的位置,也是 x 的長度。
pr = 0
# 找到 space 會開啟列印狀態, 
while(1):
    tmp = sys.stdin.buffer.read(mx).decode()
    # 每次讀取一段
    本次讀取長度 = len(tmp)
    if(pr):
        print(tmp, end = '')
        # 列印模式已打開,讀到的都要印出
    else:
        # 還沒開始列印
        v = tmp.find(' ')
        # 看看本次有沒有讀到 space
        if(v == -1): 
            sp += mx
            # 沒看到 space 先紀錄 x 的長度
        else:
            pr = 1
            sp += v
            print(tmp[v+1:], end = '')
            # 有看到 space 先開啟列印模式
            # 把 space 前的長度加到 sp
            # 把 space 後面的字先印出
    if(本次讀取長度 < mx): break
    # 到檔尾了
    
print(' ', end = '') # y 印好了補個 space        
sys.stdin.seek(0)    # 倒回原點

while(sp):
    tmp = sys.stdin.buffer.read(mx).decode()
    本次讀取長度 = len(tmp)
    本次列印長度 = min(sp, 本次讀取長度)
    本次列印內容 = tmp[:本次列印長度]
    print(本次列印內容, end = '')
    sp -= 本次列印長度

沒有留言:

張貼留言