結果
| 問題 |
No.1282 Display Elements
|
| コンテスト | |
| ユーザー |
👑 SPD_9X2
|
| 提出日時 | 2020-11-06 21:43:24 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,003 bytes |
| コンパイル時間 | 151 ms |
| コンパイル使用メモリ | 82,428 KB |
| 実行使用メモリ | 115,540 KB |
| 最終ジャッジ日時 | 2024-07-22 12:33:29 |
| 合計ジャッジ時間 | 3,098 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 13 WA * 11 |
ソースコード
"""
https://yukicoder.me/problems/no/1282
Aはちいさいほうから出すべき
"""
from sys import stdin
def bitadd(a,w,bit): #aにwを加える(1-origin)
a += 1
x = a
while x <= (len(bit)-1):
bit[x] += w
x += x & (-1 * x)
def bitsum(a,bit): #ind 1~aまでの和を求める
a += 1
ret = 0
x = a
while x > 0:
ret += bit[x]
x -= x & (-1 * x)
return ret
N = int(stdin.readline())
a = list(map(int,stdin.readline().split()))
b = list(map(int,stdin.readline().split()))
a.sort()
lis = []
dic = {}
for i in b:
if i not in dic:
dic[i] = 0
lis.append(i)
for i in range(len(lis)):
dic[lis[i]] = i
ans = 0
BIT = [0] * (len(lis)+5)
cnt = 0
for i in a:
bitadd(dic[b[cnt]] , 1 , BIT)
l = -1
r = len(lis)
while r-l != 1:
m = (l+r)//2
if lis[m] >= i:
r = m
else:
l = m
if l != -1:
ans += bitsum(l,BIT)
cnt += 1
print (ans)
SPD_9X2