2126 - Nr Max Interv

From Bitnami MediaWiki
Revision as of 09:56, 9 December 2023 by Raul (talk | contribs) (Pagină nouă: = Cerința = Se consideră <code>n</code> intervale de numere întregi <code>[A<sub>i</sub></code>, <code>B<sub>i</sub>]</code>, <code>1≤i≤n</code>. Să se determine numărul maxim de intervale care se '''suprapun''' (''au cel puțin o valoare comună''). = Date de intrare = Fișierul de intrare <code>nrmaxinterv.in</code> conține pe prima linie un numărul natural <code>n</code>. Pe următoarele <code>n</code> linii sunt descrise cele <code>n</code> intervale, câte u...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Cerința[edit | edit source]

Se consideră n intervale de numere întregi [Ai, Bi], 1≤i≤n. Să se determine numărul maxim de intervale care se suprapun (au cel puțin o valoare comună).

Date de intrare[edit | edit source]

Fișierul de intrare nrmaxinterv.in conține pe prima linie un numărul natural n. Pe următoarele n linii sunt descrise cele n intervale, câte un interval pe linie. Pentru fiecare interval i sunt specificate capetele sale Ai și Bi.

Date de ieșire[edit | edit source]

Fișierul de ieșire nrmaxinterv.out conține pe prima linie numărul natural NR, ce reprezintă numărul maxim de intervale care se suprapun.

Restricții și precizări[edit | edit source]

  • 1 ≤ n ≤ 100.000
  • -1.000.000.000 ≤ Ai < Bi ≤ 1.000.000.000

Exemplu:[edit | edit source]

nrmaxinterv.in

5
1 4
0 3
8 12
5 9
5 11

nrmaxinterv.out

3

Încărcare soluție[edit | edit source]

Lipește codul aici[edit | edit source]

​import sys
sys.stdin = open('nrmaxinterv.in', 'r')
sys.stdout = open('nrmaxinterv.out', 'w')
a = [0] * 100001
b = [0] * 100001
n = int(input())
for i in range(1, n + 1):
    a[i], b[i] = map(int, input().split())
a.sort()
b.sort()
i = 1
j = 1
cntmax = 0
cnt = 0
while i <= n and j <= n:
    if a[i] <= b[j]:
        i += 1
        cnt += 1
        if cnt > cntmax:
            cntmax = cnt
    else:
        j += 1
        cnt -= 1
print(cntmax)