Submission #5300115


Source Code Expand

import sys
from collections import Counter
sys.setrecursionlimit(10**6)
N, X = map(int, input().split())
A = list(map(int, input().split()))
def count(B):
    L = len(B)
    if L == 1:
        return 0
    B1 = (B[:L//2])[::-1]
    B2 = B[L//2:]
    res = 0
    M1 = [0]*(L//2)
    M2 = [0]*(-(-L//2))
    C1 = [0]*(L//2)
    C2 = [0]*(-(-L//2))
    maxi = -1
    cnt = 0
    for i, b in enumerate(B1):
        if b == maxi:
            cnt += 1
        elif b > maxi:
            maxi = b
            cnt = 1
        M1[i] = maxi
        C1[i] = cnt
    maxi = -1
    cnt = 0
    for i, b in enumerate(B2):
        if b == maxi:
            cnt += 1
        elif b > maxi:
            maxi = b
            cnt = 1
        M2[i] = maxi
        C2[i] = cnt
    e2 = -1
    table = Counter()
    for b, m, c in zip(B1, M1, C1):
        while e2 < -(-L//2) - 1 and B2[e2+1] <= b:
            e2 += 1
            table[B2[e2]] += 1
        if 0 <= X - b - m <= 10**5:
            res += table[X - b - m]*c
    e1 = -1
    table = Counter()
    for b, m, c in zip(B2, M2, C2):
        while e1 < L//2 - 1 and B1[e1+1] <= b:
            e1 += 1
            table[B1[e1]] += 1
        if 0 <= X - b - m <= 10**5:
            res += table[X - b - m]*c
    return res
J = []
def div(C):
    L = len(C)
    if L == 1:
        return
    J.append(C)
    div(C[:L//2])
    div(C[L//2:])
div(A)
ans = 0
if not X % 3:
    ans += A.count(X//3)
for j in J:
    ans += count(j)
print(ans)

Submission Info

Submission Time
Task H - Highest and Ends
User Tallfall
Language PyPy3 (2.4.0)
Score 800
Code Size 1538 Byte
Status AC
Exec Time 1088 ms
Memory 121844 KiB

Judge Result

Set Name Sample Small All
Score / Max Score 0 / 0 300 / 300 500 / 500
Status
AC × 3
AC × 23
AC × 53
Set Name Test Cases
Sample 00, 01, 02
Small 00, 01, 02, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29
All 00, 01, 02, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59
Case Name Status Exec Time Memory
00 AC 164 ms 38256 KiB
01 AC 165 ms 38256 KiB
02 AC 166 ms 38256 KiB
10 AC 340 ms 53340 KiB
11 AC 335 ms 52316 KiB
12 AC 266 ms 47724 KiB
13 AC 305 ms 49884 KiB
14 AC 371 ms 53468 KiB
15 AC 299 ms 50868 KiB
16 AC 366 ms 54364 KiB
17 AC 323 ms 51804 KiB
18 AC 298 ms 48220 KiB
19 AC 261 ms 44400 KiB
20 AC 349 ms 54232 KiB
21 AC 372 ms 55900 KiB
22 AC 347 ms 52588 KiB
23 AC 337 ms 52188 KiB
24 AC 388 ms 56284 KiB
25 AC 312 ms 48876 KiB
26 AC 362 ms 53212 KiB
27 AC 314 ms 50280 KiB
28 AC 276 ms 47468 KiB
29 AC 293 ms 48732 KiB
30 AC 1010 ms 120944 KiB
31 AC 949 ms 113496 KiB
32 AC 761 ms 107372 KiB
33 AC 779 ms 103148 KiB
34 AC 1005 ms 116812 KiB
35 AC 883 ms 108100 KiB
36 AC 1080 ms 121844 KiB
37 AC 952 ms 114976 KiB
38 AC 787 ms 87484 KiB
39 AC 776 ms 83328 KiB
40 AC 903 ms 93648 KiB
41 AC 971 ms 97024 KiB
42 AC 986 ms 102268 KiB
43 AC 1077 ms 104532 KiB
44 AC 1015 ms 104060 KiB
45 AC 1042 ms 103256 KiB
46 AC 1088 ms 105892 KiB
47 AC 940 ms 108012 KiB
48 AC 968 ms 113904 KiB
49 AC 965 ms 104436 KiB
50 AC 961 ms 98784 KiB
51 AC 1024 ms 99064 KiB
52 AC 1088 ms 107176 KiB
53 AC 1049 ms 105536 KiB
54 AC 884 ms 99732 KiB
55 AC 950 ms 101392 KiB
56 AC 952 ms 111148 KiB
57 AC 992 ms 114184 KiB
58 AC 1070 ms 109868 KiB
59 AC 947 ms 118512 KiB