提出 #25488092
ソースコード 拡げる
from heapq import heappop,heappush
from collections import defaultdict
class QuasiMultiset:
def __init__(self,deleteFlag=True):
'''
deleteFlag: 要素数が0となったkeyを辞書から削除するか
'''
self.len = 0
self.f = defaultdict(int)
self.pos = []
self.neg = []
self.deleteFlag = deleteFlag
def _delete(self,key):
'''
要素数が0となったkeyを辞書から削除
内部呼び出し用
'''
if self.deleteFlag and self.f[key] == 0:
del self.f[key]
def add(self,x,key=None):
'''
x:追加する要素の値
key:キー
'''
if key is None:
key = x
self.len += 1
heappush(self.pos,(x,key))
heappush(self.neg,(-x,key))
self.f[key] += 1
def popMax(self,returnKey=False):
'''
最大値とそのkey(optional)をpopする
'''
while True:
x,key = heappop(self.neg)
if self.f[key]:
self.f[key] -= 1
self.len -= 1
self._delete(key)
if returnKey:
return -x,key
else:
return x
def popMin(self,returnKey=False):
'''
最小値とそのkey(optional)をpopする
'''
while True:
x,key = heappop(self.pos)
if self.f[key]:
self.f[key] -= 1
self.len -= 1
self._delete(key)
if returnKey:
return x,key
else:
return x
def seachMax(self,returnKey=False):
'''
最大値とそのkey(optional)をreturnする
'''
while True:
x,key = self.neg[0]
if self.f[key]:
if returnKey:
return -x,key
else:
return -x
else:
heappop(self.neg)
def seachMin(self,returnKey=False):
'''
最小値とそのkey(optional)をreturnする
'''
while True:
x,key = self.pos[0]
if self.f[key]:
if returnKey:
return x,key
else:
return x
else:
heappop(self.pos)
def delete(self,key):
'''
key:削除するkey
'''
self.f[key] -= 1
self._delete(key)
self.len -= 1
def exist(self,key):
t = self.f.get(key)
if t is None:
return False
else:
if self.f[t]:
return True
else:
return False
N = int(input())
mins = []
maxes = []
for i in range(N):
x,y = sorted(map(int,input().split()))
mins.append(x)
maxes.append(y)
def solve1():
return (max(mins)-min(mins))*(max(maxes)-min(maxes))
def solve2():
ms = QuasiMultiset()
d = max(maxes)-min(mins)
mn = [(mins[i],i) for i in range(N)]
mn.sort()
for i in range(N):
ms.add(mn[i][0])
mi = ms.seachMax()-ms.seachMin()
for i in range(N):
x,idx = mn[i]
ms.delete(x)
ms.add(maxes[idx])
mi = min(mi,ms.seachMax()-ms.seachMin())
return (max(maxes)-min(mins))*mi
print(min(solve1(),solve2()))
提出情報
| 提出日時 | |
|---|---|
| 問題 | E - Ball Coloring |
| ユーザ | mymelochan |
| 言語 | PyPy3 (7.3.0) |
| 得点 | 700 |
| コード長 | 3567 Byte |
| 結果 | AC |
| 実行時間 | 1114 ms |
| メモリ | 230040 KiB |
ジャッジ結果
| セット名 | Sample | All | ||||
|---|---|---|---|---|---|---|
| 得点 / 配点 | 0 / 0 | 700 / 700 | ||||
| 結果 |
|
|
| セット名 | テストケース |
|---|---|
| Sample | example0, example1, example2 |
| All | div20, div21, div22, div23, div24, example0, example1, example2, maxrand0, maxrand1, maxrand2, maxrand20, maxrand21, maxrand210, maxrand211, maxrand22, maxrand23, maxrand24, maxrand25, maxrand26, maxrand27, maxrand28, maxrand29, maxrand3, maxrand4, smallrand0, smallrand1, smallrand2, smallrand3, smallrand4, sparse0, sparse1, sparse2, sparse3, sparse4 |
| ケース名 | 結果 | 実行時間 | メモリ |
|---|---|---|---|
| div20 | AC | 1091 ms | 228696 KiB |
| div21 | AC | 1080 ms | 230040 KiB |
| div22 | AC | 1076 ms | 228864 KiB |
| div23 | AC | 1074 ms | 229036 KiB |
| div24 | AC | 1114 ms | 228728 KiB |
| example0 | AC | 66 ms | 65456 KiB |
| example1 | AC | 52 ms | 65764 KiB |
| example2 | AC | 53 ms | 65576 KiB |
| maxrand0 | AC | 1058 ms | 228644 KiB |
| maxrand1 | AC | 1069 ms | 228724 KiB |
| maxrand2 | AC | 1069 ms | 229484 KiB |
| maxrand20 | AC | 855 ms | 203832 KiB |
| maxrand21 | AC | 923 ms | 205628 KiB |
| maxrand210 | AC | 737 ms | 194140 KiB |
| maxrand211 | AC | 895 ms | 200132 KiB |
| maxrand22 | AC | 888 ms | 201368 KiB |
| maxrand23 | AC | 961 ms | 201172 KiB |
| maxrand24 | AC | 1103 ms | 216984 KiB |
| maxrand25 | AC | 894 ms | 205636 KiB |
| maxrand26 | AC | 864 ms | 199584 KiB |
| maxrand27 | AC | 948 ms | 199424 KiB |
| maxrand28 | AC | 1032 ms | 206300 KiB |
| maxrand29 | AC | 1088 ms | 219048 KiB |
| maxrand3 | AC | 1085 ms | 229464 KiB |
| maxrand4 | AC | 1077 ms | 229984 KiB |
| smallrand0 | AC | 67 ms | 65696 KiB |
| smallrand1 | AC | 49 ms | 65708 KiB |
| smallrand2 | AC | 50 ms | 65720 KiB |
| smallrand3 | AC | 56 ms | 65760 KiB |
| smallrand4 | AC | 55 ms | 65620 KiB |
| sparse0 | AC | 810 ms | 173564 KiB |
| sparse1 | AC | 814 ms | 173480 KiB |
| sparse2 | AC | 809 ms | 170708 KiB |
| sparse3 | AC | 811 ms | 171664 KiB |
| sparse4 | AC | 830 ms | 171272 KiB |