0601 - Dreptunghiuri

From Bitnami MediaWiki
Revision as of 18:36, 4 January 2024 by Corjuc Eunice (talk | contribs) (Pagină nouă: = Cerința = Se consideră într-un reper cartezian <code>n</code> 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 <code>input.txt</code> conține pe prima linie numărul <code>n</code>; următoarele <code>n</code> linii conțin câte două nu...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Cerința[edit | edit source]

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[edit | edit source]

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[edit | edit source]

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[edit | edit source]

  • 1 ≤ n ≤ 1000

Exemplul 1[edit | edit source]

input.txt:

4

1 0

2 4

4 2

1 2

output.txt:

6

Exemplul 2[edit | edit source]

input.txt:

9999999

1 0

3 4

4 2

1 2

Output:

Constrangeri neindeplinite

Rezolvare[edit | edit source]

<syntaxhighlight lang="python3" line="1"> 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))

</syntaxhighlight>