結果
| 問題 |
No.905 Sorted?
|
| コンテスト | |
| ユーザー |
tamato
|
| 提出日時 | 2020-02-13 21:37:19 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 416 ms / 2,000 ms |
| コード長 | 1,539 bytes |
| コンパイル時間 | 215 ms |
| コンパイル使用メモリ | 82,048 KB |
| 実行使用メモリ | 123,108 KB |
| 最終ジャッジ日時 | 2024-10-06 06:25:36 |
| 合計ジャッジ時間 | 6,062 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 23 |
ソースコード
def main():
import sys
input = sys.stdin.readline
# min
def STfunc(a, b):
if a < b:
return a
else:
return b
# クエリは0-indexedで[l, r)
class SparseTable():
def __init__(self, A):
# A: 処理したい数列
self.N = len(A)
self.K = self.N.bit_length() - 1
self.table = [[0] * (self.K + 1) for _ in range(self.N)]
for i, a in enumerate(A):
self.table[i][0] = A[i]
for k in range(1, self.K + 1):
for i in range(self.N):
j = i + (1 << (k - 1))
if j <= self.N - 1:
self.table[i][k] = STfunc(self.table[i][k - 1], self.table[j][k - 1])
else:
self.table[i][k] = self.table[i][k - 1]
def query(self, l, r):
# [l, r)の最小値を求める
k = (r - l).bit_length() - 1
return STfunc(self.table[l][k], self.table[r - (1 << k)][k])
N = int(input())
A = list(map(int, input().split()))
inc = [A[i+1] - A[i] for i in range(N-1)]
dec = [A[i] - A[i+1] for i in range(N-1)]
ST_inc = SparseTable(inc)
ST_dec = SparseTable(dec)
Q = int(input())
for _ in range(Q):
l, r = map(int, input().split())
if l == r:
print(1, 1)
continue
print(int(ST_inc.query(l, r) >= 0), int(ST_dec.query(l, r) >= 0))
if __name__ == '__main__':
main()
tamato