Skip to content

Instantly share code, notes, and snippets.

@modos
Created October 14, 2022 05:05
Show Gist options
  • Save modos/4ded03f44eb1dd429d487a20322a2d28 to your computer and use it in GitHub Desktop.
Save modos/4ded03f44eb1dd429d487a20322a2d28 to your computer and use it in GitHub Desktop.
یه قل دو قل در برره
import sys
x = {}
n = int(input())
for _ in range(n):
inp = input().split(' ')
x[int(inp[0])] = int(inp[1])
dic = sorted(x.items())
mald = len(set(x.values()))
dic2 = set()
for i in range(len(dic) - 1):
if dic[i][1] != dic[i + 1][1]:
dic2.add(dic[i])
dic2.add(dic[i + 1])
dic = sorted(dic2)
le = len(dic)
# *************************************************************************
# print(mald, dic)
minim = sys.maxsize
i = 0
while i < le:
dic2 = set()
if i + mald <= le:
for j in range(i, i + mald - 1):
dic2.add(dic[j][1])
for j in range(i + mald - 1, le):
dic2.add(dic[j][1])
if len(dic2) == mald:
# print(dic2)
# print('-->', dic[i][0], dic[j][0])
minim = min([dic[j][0] - dic[i][0], minim])
break
if not len(dic2) == mald:
break
dic2 = set()
for k in range(mald - 1):
dic2.add(dic[j - k][1])
for k in range(mald - 1, j - i + 1):
dic2.add(dic[j - k][1])
if len(dic2) == mald:
# print(dic2)
# print('<--', dic[j][0], dic[j - k][0])
minim = min([dic[j][0] - dic[j - k][0], minim])
i = j - k + 1
break
print(minim)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment