結果

問題 No.457 (^^*)
ユーザー Mr.FukuMr.Fuku
提出日時 2018-08-08 23:01:21
言語 Python3
(3.12.2 + numpy 1.26.4 + scipy 1.12.0)
結果
AC  
実行時間 43 ms / 2,000 ms
コード長 1,448 bytes
コンパイル時間 390 ms
コンパイル使用メモリ 11,944 KB
実行使用メモリ 11,120 KB
最終ジャッジ日時 2023-10-24 11:54:31
合計ジャッジ時間 1,601 ms
ジャッジサーバーID
(参考情報)
judge12 / judge11
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 29 ms
10,112 KB
testcase_01 AC 30 ms
10,112 KB
testcase_02 AC 30 ms
10,112 KB
testcase_03 AC 29 ms
10,112 KB
testcase_04 AC 28 ms
10,112 KB
testcase_05 AC 27 ms
10,112 KB
testcase_06 AC 28 ms
10,116 KB
testcase_07 AC 28 ms
10,140 KB
testcase_08 AC 28 ms
10,176 KB
testcase_09 AC 30 ms
10,268 KB
testcase_10 AC 33 ms
10,596 KB
testcase_11 AC 39 ms
11,120 KB
testcase_12 AC 35 ms
10,376 KB
testcase_13 AC 40 ms
10,228 KB
testcase_14 AC 30 ms
10,532 KB
testcase_15 AC 35 ms
10,376 KB
testcase_16 AC 43 ms
10,228 KB
testcase_17 AC 30 ms
10,532 KB
testcase_18 AC 27 ms
10,112 KB
testcase_19 AC 28 ms
10,112 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

s = list(input())
len_s = len(s)
close_list = [0]*len_s
face_l = []
face_r = []
cnt_l = 0
cnt_r = 0

def readface():
    eyes = []
    kome = []
    close_cnt = 0
    for i in range(len_s-1,-1,-1):
        x = s[i]
        if x==")":
            close_cnt+=1
        elif x=="^":
            eyes.append(i)
            if len(eyes)>1 and len(kome)>0:
                for j in range(len(kome)-1,-1,-1):
                    if kome[j]>eyes[-2]:
                        face_l.append([i,kome[j]])
                        break
        elif x=="*":
            kome.append(i)
            if len(eyes)>1:
                face_r.append([i,eyes[-2]])
        close_list[i]=close_cnt

def delmin(n):
    global face_l,face_r
    d_list = []
    for i in range(len(face_l)):
        if face_l[i][0]<n:
            d_list.append(i)
        else:
            break
    d_list.reverse()
    for i in d_list:
        del face_l[i]
        
    d_list = []
    for i in range(len(face_r)):
        if face_r[i][0]<n:
            d_list.append(i)
        else:
            break
    d_list.reverse()
    for i in d_list:
        del face_r[i]

def check(light):
    global cnt_l,cnt_r
    if len(face_l)>0:
        cnt_l += close_list[face_l[0][1]]
    if len(face_r)>0:
        cnt_r += close_list[face_r[0][1]]

readface()
face_l.sort()
face_r.sort()
for light in range(len_s):
    if s[light]=="(":
        delmin(light)
        check(light)
print(cnt_l,cnt_r)
0