結果
問題 | No.905 Sorted? |
ユーザー |
![]() |
提出日時 | 2025-03-03 00:38:08 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 430 ms / 2,000 ms |
コード長 | 1,019 bytes |
コンパイル時間 | 712 ms |
コンパイル使用メモリ | 82,728 KB |
実行使用メモリ | 125,488 KB |
最終ジャッジ日時 | 2025-03-03 00:38:16 |
合計ジャッジ時間 | 7,212 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 23 |
ソースコード
class SparseTable: def __init__(self, iterable, op=min): self.op=op self.n=len(iterable) self.log=(self.n-1).bit_length() self.table=[[None]*self.n for _ in range(self.log+1)] self.table[0]=list(iterable) for p in range(1,self.log+1): for cu in range(self.n): ncu=cu+(1<<(p-1)) if ncu<self.n: self.table[p][cu]=self.op(self.table[p-1][cu],self.table[p-1][ncu]) else: self.table[p][cu]=self.table[p-1][cu] def prod(self,l,r): p=(r-l).bit_length()-1 return self.op(self.table[p][l],self.table[p][r-(1<<p)]) n=int(input()) A=list(map(int,input().split())) q=int(input()) LR=[list(map(int,input().split())) for _ in range(q)] f,g=[1]*n,[1]*n for i in range(n-1): f[i]=int(A[i]<=A[i+1]) g[i]=int(A[i]>=A[i+1]) f=SparseTable(f) g=SparseTable(g) for l,r in LR: if r-l==0: print(1,1) else: print(f.prod(l,r),g.prod(l,r))