Pagini recente » Cod sursa (job #3133266) | Cod sursa (job #1942711) | Cod sursa (job #1312747) | Cod sursa (job #1420861) | Cod sursa (job #3134995)
class Zeap:
def __init__(self):
self.elements = {}
self.order = []
def INSEREAZA(self, x):
if x not in self.elements:
self.elements[x] = True
self.order.append(x)
def STERGE(self, x):
if x in self.elements:
del self.elements[x]
self.order.remove(x)
else:
return -1
def CAUTA(self, x):
if x in self.elements:
return 1
else:
return 0
def MAX_DIF(self):
if len(self.elements) < 2:
return -1
max_diff = float('-inf')
for i in range(len(self.order)):
for j in range(i + 1, len(self.order)):
diff = abs(self.order[i] - self.order[j])
if diff > max_diff:
max_diff = diff
return max_diff
def MIN_DIF(self):
if len(self.elements) < 2:
return -1
min_diff = float('inf')
for i in range(len(self.order)):
for j in range(i + 1, len(self.order)):
diff = abs(self.order[i] - self.order[j])
if diff < min_diff:
min_diff = diff
return min_diff
# Citirea datelor de intrare
with open('zeap.in', 'r') as f:
lines = f.readlines()
# Initializarea structurii de date Zeap
zeap = Zeap()
# Prelucrarea operațiilor
output = []
for line in lines:
line = line.strip().split()
operation = line[0]
value = int(line[1]) if len(line) > 1 else None
if operation == 'I':
zeap.INSEREAZA(value)
elif operation == 'S':
result = zeap.STERGE(value)
if result is not None:
output.append(str(result))
elif operation == 'C':
output.append(str(zeap.CAUTA(value)))
elif operation == 'MAX':
output.append(str(zeap.MAX_DIF()))
elif operation == 'MIN':
output.append(str(zeap.MIN_DIF()))
# Scrierea rezultatelor în fișierul de ieșire
with open('zeap.out', 'w') as f:
f.write('\n'.join(output))