Submission #72539097
Source Code Expand
N=int(input())
S=list(input())
D=[0]
for i in range(N) :
if S[i]=="A" :
D.append(D[-1]-1000000+1)
elif S[i]=="B" :
D.append(D[-1]+1000000+1)
else :
D.append(D[-1]+1)
class BIT:
def __init__(self, N):
self.N = N
self.bits = [0] * (self.N + 1)
def update(self, i, x):
while i <= self.N:
self.bits[i] += x
i += i & -i
def total(self, i):
res = 0
while i > 0:
res += self.bits[i]
i -= i & -i
return res
def binary_search(data, value):
left = 0 # 探索する範囲の左端を設定
right = len(data) - 1 # 探索する範囲の右端を設定
while left <= right:
mid = (left + right) // 2 # 探索する範囲の中央を計算
if data[mid] == value:
# 中央の値と一致した場合は位置を返す
return mid
elif data[mid] < value:
# 中央の値より大きい場合は探索範囲の左を変える
left = mid + 1
else:
# 中央の値より小さい場合は探索範囲の右を変える
right = mid - 1
return -1 # 見つからなかった場合
#これは事故らない二分探索です
def binary_min(data, lower_bound):
value=lower_bound
left = 0 # 探索する範囲の左端を設定
right = len(data) - 1 # 探索する範囲の右端を設定
while left < right:
mid = (left + right) // 2# 探索する範囲の中央を計算
if data[mid] < value:
# 中央の値より大きい場合は探索範囲の左を変える
left = mid +1
else:
# 中央の値より小さい場合は探索範囲の右を変える
right = mid
mid = (left + right) // 2
return mid # 見つからなかった場合
#これは事故らない二分探索です
def binary_max(data, upper_bound):
value=upper_bound
left = 0 # 探索する範囲の左端を設定
right = len(data) - 1 # 探索する範囲の右端を設定
while left < right:
mid = (left + right+1) // 2# 探索する範囲の中央を計算
if data[mid] > value:
# 中央の値より大きい場合は探索範囲の左を変える
right = mid -1
else:
# 中央の値より小さい場合は探索範囲の右を変える
left = mid
mid = (left + right) // 2
return mid # 見つからなかった場合
def compression(data) :
V=data.copy()
V=sorted(V)
last="^o^"
E=[]
F=[]
for i in range(len(V)):
if V[i]!=last :
E.append(V[i])
last=V[i]
for i in range(len(V)) :
F.append(binary_search(E,data[i]))
return F
N +=1
bits = BIT(N)
S = sorted(list(set(D)))
ranking = {x:i+1 for i,x in enumerate(S)}
E = []
for a in D:
E.append(ranking[a])
count = 0
for i in range(N - 1, -1, -1):
count += bits.total(E[i] - 1)
bits.update(E[i], 1)
print(count)
Submission Info
| Submission Time | |
|---|---|
| Task | E - A > B substring |
| User | Youteru |
| Language | Python (PyPy 3.11-v7.3.20) |
| Score | 450 |
| Code Size | 3280 Byte |
| Status | AC |
| Exec Time | 320 ms |
| Memory | 358476 KiB |
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 450 / 450 | ||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| Sample | 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt |
| All | 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 01_random_03.txt, 01_random_04.txt, 01_random_05.txt, 01_random_06.txt, 01_random_07.txt, 01_random_08.txt, 01_random_09.txt, 01_random_10.txt, 01_random_11.txt, 01_random_12.txt, 01_random_13.txt, 01_random_14.txt, 01_random_15.txt, 01_random_16.txt, 01_random_17.txt, 01_random_18.txt, 01_random_19.txt, 01_random_20.txt, 01_random_21.txt, 01_random_22.txt, 01_random_23.txt, 01_random_24.txt, 01_random_25.txt, 01_random_26.txt, 01_random_27.txt, 01_random_28.txt, 01_random_29.txt, 01_random_30.txt, 01_random_31.txt, 01_random_32.txt, 01_random_33.txt, 01_random_34.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| 00_sample_00.txt | AC | 48 ms | 80252 KiB |
| 00_sample_01.txt | AC | 47 ms | 80340 KiB |
| 00_sample_02.txt | AC | 48 ms | 80332 KiB |
| 01_random_03.txt | AC | 320 ms | 357796 KiB |
| 01_random_04.txt | AC | 319 ms | 358116 KiB |
| 01_random_05.txt | AC | 318 ms | 357916 KiB |
| 01_random_06.txt | AC | 319 ms | 357264 KiB |
| 01_random_07.txt | AC | 318 ms | 357776 KiB |
| 01_random_08.txt | AC | 318 ms | 356916 KiB |
| 01_random_09.txt | AC | 319 ms | 358476 KiB |
| 01_random_10.txt | AC | 319 ms | 356344 KiB |
| 01_random_11.txt | AC | 320 ms | 358100 KiB |
| 01_random_12.txt | AC | 319 ms | 358084 KiB |
| 01_random_13.txt | AC | 318 ms | 357356 KiB |
| 01_random_14.txt | AC | 316 ms | 355492 KiB |
| 01_random_15.txt | AC | 316 ms | 357976 KiB |
| 01_random_16.txt | AC | 264 ms | 238796 KiB |
| 01_random_17.txt | AC | 203 ms | 244476 KiB |
| 01_random_18.txt | AC | 175 ms | 231360 KiB |
| 01_random_19.txt | AC | 173 ms | 229392 KiB |
| 01_random_20.txt | AC | 188 ms | 245160 KiB |
| 01_random_21.txt | AC | 217 ms | 239940 KiB |
| 01_random_22.txt | AC | 135 ms | 183000 KiB |
| 01_random_23.txt | AC | 136 ms | 182968 KiB |
| 01_random_24.txt | AC | 261 ms | 355764 KiB |
| 01_random_25.txt | AC | 261 ms | 271412 KiB |
| 01_random_26.txt | AC | 304 ms | 273116 KiB |
| 01_random_27.txt | AC | 292 ms | 273756 KiB |
| 01_random_28.txt | AC | 314 ms | 273212 KiB |
| 01_random_29.txt | AC | 269 ms | 266056 KiB |
| 01_random_30.txt | AC | 265 ms | 266000 KiB |
| 01_random_31.txt | AC | 250 ms | 266296 KiB |
| 01_random_32.txt | AC | 48 ms | 80136 KiB |
| 01_random_33.txt | AC | 48 ms | 80212 KiB |
| 01_random_34.txt | AC | 47 ms | 80164 KiB |