0601 - Dreptunghiuri
De la Universitas MediaWiki
Cerința
Se consideră într-un reper cartezian n
puncte cu coordonate pozitive. Prin fiecare punct se desenează o dreaptă verticală și una orizontală. Să se determine câte dreptunghiuri cu interioarele disjuncte s-au format prin intermediul acestor drepte şi al axelor de coordonate.
Date de intrare
Fișierul de intrare input.txt
conține pe prima linie numărul n
; următoarele n
linii conțin câte două numere x y
, reprezentând coordonatele punctelor.
Date de ieșire
Fișierul de ieșire output.txt
va conține pe prima linie numărul C
, reprezentând valoarea cerută.
Restricții și precizări
1 ≤ n ≤ 1000
Exemplul 1
input.txt:
4
1 0
2 4
4 2
1 2
output.txt:
6
Exemplul 2
input.txt:
9999999
1 0
3 4
4 2
1 2
Output:
Constrangeri neindeplinite
Rezolvare
def ver(n):
if not(1<=n<=1000):
print("Constrangeri neindeplinite")
exit()
with open("input.txt", 'r') as fin, open("output.txt", 'w') as fout:
n = int(fin.readline())
ver(n)
a = [0] * (n + 1)
b = [0] * (n + 1)
for i in range(1, n + 1):
a[i], b[i] = map(int, fin.readline().split())
for i in range(1, n):
for j in range(i + 1, n + 1):
if a[i] > a[j]:
a[i], a[j] = a[j], a[i]
if b[i] > b[j]:
b[i], b[j] = b[j], b[i]
cnt1 = 0
cnt2 = 0
for i in range(1, n + 1):
if a[i] != a[i - 1]:
cnt1 += 1
if b[i] != b[i - 1]:
cnt2 += 1
fout.write(str(cnt1 * cnt2))