結果
| 問題 | No.1282 Display Elements | 
| コンテスト | |
| ユーザー | 👑  SPD_9X2 | 
| 提出日時 | 2020-11-06 21:54:07 | 
| 言語 | PyPy3 (7.3.15) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 212 ms / 2,000 ms | 
| コード長 | 1,060 bytes | 
| コンパイル時間 | 628 ms | 
| コンパイル使用メモリ | 82,464 KB | 
| 実行使用メモリ | 116,288 KB | 
| 最終ジャッジ日時 | 2024-07-22 12:43:08 | 
| 合計ジャッジ時間 | 3,630 ms | 
| ジャッジサーバーID (参考情報) | judge4 / judge1 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| other | AC * 24 | 
ソースコード
"""
https://yukicoder.me/problems/no/1282
Aはちいさいほうから出すべき
貪欲ではない?
B 100 50 1
A 101 51 1
"""
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)
lis.sort()
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)
            
            
            
        