結果

問題 No.778 クリスマスツリー
ユーザー るこーそー
提出日時 2025-03-25 14:35:59
言語 PyPy3
(7.3.15)
結果
RE  
実行時間 -
コード長 1,027 bytes
コンパイル時間 377 ms
コンパイル使用メモリ 82,420 KB
実行使用メモリ 111,816 KB
最終ジャッジ日時 2025-03-25 14:36:06
合計ジャッジ時間 4,991 ms
ジャッジサーバーID
(参考情報)
judge2 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 9 RE * 3
権限があれば一括ダウンロードができます

ソースコード

diff #

class BIT:
    def __init__(self,n):
        self.n=n
        self.d=[0]*(n+1)
    def add(self,i,x):
        i+=1
        while i<=self.n:
            self.d[i]+=x
            i+=i&-i
    def _sum(self,i):
        res=0
        i+=1
        while i>0:
            res+=self.d[i]
            i-=i&-i
        return res
    def sum(self,l,r):
        return self._sum(r-1)-self._sum(l-1)
    def max_right(self,l,f):
        if l==self.n:
            return self.n
        s=self._sum(l)  
        pos=l
        bit_mask=1<<(self.n.bit_length()-1)
        while bit_mask:
            nxt=pos+bit_mask
            if nxt<=self.n and f(s+self.d[nxt]):
                s+=self.d[nxt]
                pos=nxt
            bit_mask>>=1
        return pos
    
n=int(input())
A=list(map(int,input().split()))

g=[[] for _ in range(n)]
for i in range(n-1):
    g[A[i]].append(i+1)

bit=BIT(n)
ans=0
def dfs(v):
    global ans
    ans+=bit.sum(0,v)
    bit.add(v,1)
    for nv in g[v]:
        dfs(nv)
    bit.add(v,-1)
dfs(0)
print(ans)
0