結果
| 問題 | 
                            No.778 クリスマスツリー
                             | 
                    
| コンテスト | |
| ユーザー | 
                             silversmith
                         | 
                    
| 提出日時 | 2019-05-03 03:19:01 | 
| 言語 | PyPy3  (7.3.15)  | 
                    
| 結果 | 
                             
                                RE
                                 
                             
                            
                         | 
                    
| 実行時間 | - | 
| コード長 | 1,758 bytes | 
| コンパイル時間 | 503 ms | 
| コンパイル使用メモリ | 82,380 KB | 
| 実行使用メモリ | 122,652 KB | 
| 最終ジャッジ日時 | 2024-12-31 14:05:18 | 
| 合計ジャッジ時間 | 5,206 ms | 
| 
                            ジャッジサーバーID (参考情報)  | 
                        judge4 / judge2 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 3 | 
| other | AC * 9 RE * 3 | 
ソースコード
class sorted_list:
    def __init__(self):
        self.list = []
    
    def _idx(self,val):
        if len(self.list) == 0:
            return 0
        else:
            left = 0
            right = len(self.list) -1
            mid = int((left + right)/2)
            if val < self.list[left]:
                return 0
            elif val > self.list[right]:
                return len(self.list)
            else:
                while right -left > 1:
                    mid = int((left + right)/2)
                    if val < self.list[mid]:
                        right = mid
                    else:
                        left = mid
                return mid if val < self.list[mid] else mid +1
    def insert(self,val):
        idx = self._idx(val)
        if idx < len(self.list):
            self.list.insert(self._idx(val), val)
        else:
            self.list.append(val)
    
    def remove(self, val):
        self.list.remove(val)
    def order_of_key(self, val):
        return self._idx(val)
class Node:
    def __init__(self):
        #self.parent_Node = None
        self.child_Node = []
         
class tree:
    def __init__(self, Nodes):
        self.Nodes = Nodes
        self.sorted_list=sorted_list()
    def push_edge(self,low, upper):
        self.Nodes[upper].child_Node.append(low)
    def dns(self, val):
        r = self.sorted_list.order_of_key(val)
        self.sorted_list.insert(val)
        r += sum([self.dns(node) for node in self.Nodes[val].child_Node])
        self.sorted_list.remove(val)
    
        return r
    
N = int(input())
A = map(int, input().split())
t = tree([Node() for i in range(N)])
for idx, a in enumerate(A):
    t.push_edge(idx + 1, a)
A = None
N = None
print(t.dns(0))
            
            
            
        
            
silversmith