結果
| 問題 |
No.1535 五七五
|
| コンテスト | |
| ユーザー |
ygd.
|
| 提出日時 | 2021-06-10 22:38:00 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 336 ms / 2,000 ms |
| コード長 | 1,206 bytes |
| コンパイル時間 | 179 ms |
| コンパイル使用メモリ | 82,688 KB |
| 実行使用メモリ | 195,936 KB |
| 最終ジャッジ日時 | 2024-11-30 09:45:24 |
| 合計ジャッジ時間 | 4,538 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 21 |
ソースコード
import bisect
def main():
N = int(input())
a,b,c = map(int,input().split())
S = list(map(str,input().split()))
cumsum = [0]
for i in range(N):
temp = cumsum[-1] + len(S[i])
cumsum.append(temp)
#print(cumsum)
r = 0
ans = 0
for l in range(N):
while r < N and cumsum[r] - cumsum[l] < a+b+c:
r += 1
if cumsum[r] - cumsum[l] == a+b+c:
ok = r
ng = l
while abs(ok-ng) > 1:
mid = (ok+ng)//2
if cumsum[mid] - cumsum[l] >= a:
ok = mid
else:
ng = mid
if cumsum[ok] - cumsum[l] != a:
continue
#print(l,r,mid)
ok = l
ng = r
while abs(ok-ng) > 1:
mid = (ok+ng)//2
if cumsum[r] - cumsum[mid] >= c:
ok = mid
else:
ng = mid
#print("2",l,r,mid)
if cumsum[r] - cumsum[ok] != c:
continue
ans += 1
if l == r:
r += 1
print(ans)
if __name__ == '__main__':
main()
ygd.