結果
問題 | No.318 学学学学学 |
ユーザー |
![]() |
提出日時 | 2015-12-18 17:25:20 |
言語 | PyPy2 (7.3.15) |
結果 |
AC
|
実行時間 | 388 ms / 2,000 ms |
コード長 | 720 bytes |
コンパイル時間 | 1,845 ms |
コンパイル使用メモリ | 76,564 KB |
実行使用メモリ | 147,888 KB |
最終ジャッジ日時 | 2024-06-22 16:11:21 |
合計ジャッジ時間 | 8,653 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 26 |
ソースコード
bitN = 0; bit = []def bit_add(a,w):while a <= bitN: bit[a] += w; a += a&(-a)def bit_sum(a):ret = 0while a > 0: ret += bit[a]; a -= a&(-a)return retN = input()a = map(int,raw_input().split())b = [0]*N; c = {}; dc = {}; pos = {}for i,v in enumerate(a):if v in pos: pos[v][1]=ielse: pos[v]=[i,i]tmp = 0for v in sorted(a):if v > tmp: bitN += 1; tmp = v; c[v] = bitN; dc[bitN] = vbit = [0]*(bitN+1)for i,v in enumerate(a):bp = bitN-c[v]+1if bit_sum(bp-1) == 0: b[i] = velse:l = 0; r = bp-1while r - l > 1:mid = (l+r) / 2if bit_sum(mid): r = midelse: l = midb[i] = dc[bitN-r+1]if i == pos[v][0]: bit_add(bp, 1)if i == pos[v][1]: bit_add(bp,-1)print " ".join(map(str,b))