結果

問題 No.1859 ><<<
ユーザー 👑 rin204rin204
提出日時 2022-02-27 14:56:04
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 338 ms / 2,000 ms
コード長 907 bytes
コンパイル時間 232 ms
コンパイル使用メモリ 82,432 KB
実行使用メモリ 155,228 KB
最終ジャッジ日時 2024-07-05 14:37:25
合計ジャッジ時間 13,781 ms
ジャッジサーバーID
(参考情報)
judge3 / judge1
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 40 ms
51,968 KB
testcase_01 AC 39 ms
51,712 KB
testcase_02 AC 40 ms
51,968 KB
testcase_03 AC 40 ms
51,968 KB
testcase_04 AC 244 ms
154,984 KB
testcase_05 AC 244 ms
154,848 KB
testcase_06 AC 338 ms
154,972 KB
testcase_07 AC 246 ms
155,228 KB
testcase_08 AC 246 ms
154,716 KB
testcase_09 AC 246 ms
154,836 KB
testcase_10 AC 91 ms
87,040 KB
testcase_11 AC 165 ms
127,360 KB
testcase_12 AC 147 ms
121,088 KB
testcase_13 AC 125 ms
102,144 KB
testcase_14 AC 155 ms
130,432 KB
testcase_15 AC 186 ms
114,748 KB
testcase_16 AC 236 ms
146,876 KB
testcase_17 AC 163 ms
110,208 KB
testcase_18 AC 222 ms
146,516 KB
testcase_19 AC 168 ms
131,584 KB
testcase_20 AC 195 ms
115,256 KB
testcase_21 AC 227 ms
149,128 KB
testcase_22 AC 201 ms
147,440 KB
testcase_23 AC 195 ms
114,500 KB
testcase_24 AC 209 ms
148,052 KB
testcase_25 AC 229 ms
146,724 KB
testcase_26 AC 197 ms
140,796 KB
testcase_27 AC 245 ms
147,124 KB
testcase_28 AC 204 ms
146,044 KB
testcase_29 AC 230 ms
145,704 KB
testcase_30 AC 207 ms
114,716 KB
testcase_31 AC 194 ms
114,752 KB
testcase_32 AC 236 ms
148,564 KB
testcase_33 AC 204 ms
114,508 KB
testcase_34 AC 202 ms
146,172 KB
testcase_35 AC 234 ms
149,156 KB
testcase_36 AC 234 ms
148,996 KB
testcase_37 AC 211 ms
114,724 KB
testcase_38 AC 255 ms
149,500 KB
testcase_39 AC 235 ms
149,400 KB
testcase_40 AC 221 ms
148,300 KB
testcase_41 AC 205 ms
148,632 KB
testcase_42 AC 205 ms
114,420 KB
testcase_43 AC 227 ms
146,812 KB
testcase_44 AC 229 ms
147,196 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

class RollingHash():
    def __init__(self, s, base, mod):
        self.mod = mod
        self.pw = pw = [1]*(len(s)+1)

        l = len(s)
        self.h = h = [0]*(l+1)

        v = 0
        for i in range(l):
            h[i+1] = v = (v * base + ord(s[i])) % mod
        v = 1
        for i in range(l):
            pw[i+1] = v = v * base % mod
    def get(self, l, r):
        return (self.h[r] - self.h[l] * self.pw[r-l]) % self.mod
        
base = 37; mod = 8913478971241

n = int(input())
A = list(map(int, input().split()))
S = input()
T = []
for i in range(n - 1):
    if A[i] > A[i + 1]:
        T.append(">")
    else:
        T.append("<")
if A[n - 1] > A[0]:
    T.append(">")
else:
    T.append("<")
    
T = T + T
rh = RollingHash(T, base, mod)
S = RollingHash(S, base, mod)
S = S.get(0, n - 1)
for i in range(n):
    if rh.get(i, i + n - 1) == S:
        print(i)
        exit()
print(-1)

0