This repository has been archived on 2026-05-22. You can view files and clone it, but cannot push or open issues or pull requests.
Files
ICPC-2017/secbadge.py
2018-01-29 16:14:37 -05:00

58 lines
1.8 KiB
Python

##N, L, B = input().strip().split()
##S, D = input().strip().split()
class Range():
def __init__(self, ranges):
self.ranges = ranges
def __add__(self, other):
new_ranges = list(self.ranges)
for rang1 in other.ranges:
for i, rang2 in enumerate(new_ranges):
if rang1[0] <= rang2[0] and rang1[1] >= rang2[1]:
new_ranges[i] = rang1
break
if rang1[0] >= rang2[0] and rang1[1] <= rang2[1]:
break
if rang1[1] >= rang2[0]-1 and rang1[1] <= rang2[1]:
new_ranges[i] = (rang1[0], rang2[1])
break
if rang1[0] >= rang2[0] and rang1[0] <= rang2[1]+1:
new_ranges[i] = (rang2[0], rang1[1])
break
else:
new_ranges.append(rang1)
return Range(new_ranges)
def __mul__(self, other):
new_ranges = []
for rang1 in other.ranges:
cand = rang1
for rang2 in self.ranges:
if rang1[0] <= rang2[0] and rang1[1] >= rang2[1]:
cand = rand2
elif rang1[0] >= rang2[0] and rang1[1] <= rang2[1]:
pass
elif rang1[1] >= rang2[0] and rang1[1] <= rang2[1]:
cand (rang2[0], rang1[1])
elif rang1[0] >= rang2[0] and rang1[0] <= rang2[1]:
cand = (rang1[0], rang2[1])
else:
break
else:
new_ranges.append(cand)
return Range(new_ranges)
def __repr__(self):
return str(*self.ranges)
def __str__(self):
return str(self.ranges)
Range.INF = Range([(-float('inf'), float('inf'))])
a = Range.INF
b = Range([(3, 4)])
print(a+b)