#45348: Python


s310495@student.cysh.cy.edu.tw (Gordon._.1011)

學校 : 國立嘉義高級中學
編號 : 282269
來源 : [203.145.94.197]
最後登入時間 :
2024-12-25 22:29:41
e664. 108 p2. 空氣盒子 -- 108新北市資訊學科能力複賽 | From: [118.231.176.123] | 發表日期 : 2025-02-17 01:36

for _ in range(1) 只是我不知道要怎麼結束整個程式碼而已

後來知道可以用sys.exit()但我懶得改了 :)

我的想法是用window來三個三個看,

若window [ 0 ] 與 [ 1 ] 相同就加前一個資料直到不相同或是碰到邊界,

window [ 1 ] 與 [ 2 ] 同理;

每次只加window [ 0 ] 所對應的index (就是 i ) 進到結果 (idx) 中,避免重複。

 

如果len(idx)==0:

輸出 ("0 0")並結束程式;

否則:

用迴圈輸出日期,以空白隔開,

如果遇到連續的,則使用while 讓 i 一直+1,

直到非連續數字或是碰到邊界,最後再輸出最後這天的日期,以空白隔開

再輸出日期所對應之數值。

from sys import stdin
for _ in range(1):
    days=list(map(int,stdin.readline().split()))
    window=[]
    window=[0,days[0],days[1]]
    idx=[]
    for i in range(len(days)-2):
        window.append(days[i+2])
        window.pop(0)
        if window[1]>window[0] and window[1]>window[2]:
            idx.append(i+1)
        w=window[:]
        if window[0]==window[1]:
            w=w[:]
            a=i
            while(w[0]==w[1]):
                if a==0:
                    break
                else:
                    w.insert(0,days[a-1])
                    a-=1
            if w[0]<w[1] and w[-1]<w[-2]:
                idx.append(i+1)
        if window[2]==window[1]:
            w=w[:]
            a=i
            while(w[-1]==w[-2]):
                if a==len(days)-3:
                    break
                else:
                    w.append(days[a+3])
                    a+=1
                #print("2,w =",w)
            if w[0]<w[1] and w[-1]<w[-2]:
                idx.append(i+1)

    if len(idx)==0:
        print("0 0")
        break
    i=0
    while i<=len(idx)-1:
        p=0
        print(idx[i]+1,end=" ")
        if i<len(idx)-1:
            while idx[i+1]==idx[i]+1:
                p=1
                i+=1
                if i==len(idx)-1:
                    break
            if p:
                print(idx[i]+1,end=" ")
        print(days[idx[i]])
        i+=1
        

 

 
ZeroJudge Forum