結果

問題 No.905 Sorted?
ユーザー AT274_
提出日時 2019-10-11 22:13:42
言語 PyPy3
(7.0.0)
結果
AC  
実行時間 904 ms
コード長 836 Byte
コンパイル時間 1,232 ms
使用メモリ 124,260 KB
最終ジャッジ日時 2020-01-11 19:09:05

テストケース

テストケース表示
入力 結果 実行時間
使用メモリ
01.txt AC 104 ms
78,240 KB
02.txt AC 108 ms
78,324 KB
03.txt AC 108 ms
78,604 KB
04.txt AC 108 ms
78,560 KB
05.txt AC 104 ms
78,140 KB
06.txt AC 164 ms
80,000 KB
07.txt AC 124 ms
79,224 KB
08.txt AC 156 ms
80,864 KB
09.txt AC 800 ms
97,408 KB
10.txt AC 612 ms
90,268 KB
11.txt AC 796 ms
118,164 KB
12.txt AC 756 ms
100,804 KB
13.txt AC 820 ms
98,148 KB
14.txt AC 820 ms
124,260 KB
15.txt AC 852 ms
124,152 KB
16.txt AC 904 ms
99,156 KB
17.txt AC 852 ms
102,748 KB
18.txt AC 836 ms
102,704 KB
19.txt AC 724 ms
102,828 KB
20.txt AC 104 ms
78,336 KB
s1.txt AC 112 ms
78,368 KB
s2.txt AC 112 ms
78,336 KB
s3.txt AC 112 ms
78,688 KB
テストケース一括ダウンロード

ソースコード

diff #
from itertools import accumulate
N = int(input())
A = list(map(int, input().split()))

UP = [0] * N
DOWN = [0] * N

for i, a in enumerate(A[1:], start=1):
    if A[i - 1] > A[i]:
        UP[i] = UP[i - 1] + 1
    else:
        UP[i] = UP[i - 1]

    if A[i - 1] < A[i]:
        DOWN[i] = DOWN[i - 1] + 1
    else:
        DOWN[i] = DOWN[i - 1]

UP_acc = [0] + list(accumulate(UP))
DOWN_acc = [0] + list(accumulate(DOWN))

Q = int(input())
for q in range(Q):
    ans = []
    l, r = map(int, input().split())
    l, r = l + 1, r + 1
    u_base = UP[l - 1]

    if UP_acc[r] - UP_acc[l - 1] == (r - l + 1) * u_base:
        ans.append(1)
    else:
        ans.append(0)

    d_base = DOWN[l - 1]
    if DOWN_acc[r] - DOWN_acc[l - 1] == (r - l + 1) * d_base:
        ans.append(1)
    else:
        ans.append(0)

    print(*ans, sep=' ')
0