3201 - IJK: Difference between revisions
Pagină nouă: == Cerinţa == Se dă un şir a cu n numere naturale. Aflaţi numărul tripletelor '''(i,j,k)''', cu '''1 ≤ i < j < k ≤ n,''' pentru care avem '''a[i] > a[j] < a[k].''' == Date de intrare == Fișierul de intrare '''ijk.in''' conține pe prima linie numărul '''n''', iar pe a doua linie '''n''' numere naturale separate prin spații. == Date de ieșire == Fișierul de ieșire '''ijk.out''' va conține pe prima linie numărul tripletelor '''(i,j,k)''', cu '''1 ⩽ i < j <... |
No edit summary |
||
Line 6: | Line 6: | ||
Fișierul de ieșire '''ijk.out''' va conține pe prima linie numărul tripletelor '''(i,j,k)''', cu '''1 ⩽ i < j < k ⩽ n''', pentru care avem '''a[i] > a[j] < a[k]''''. | Fișierul de ieșire '''ijk.out''' va conține pe prima linie numărul tripletelor '''(i,j,k)''', cu '''1 ⩽ i < j < k ⩽ n''', pentru care avem '''a[i] > a[j] < a[k]''''. | ||
== Restricţii şi precizări == | == Restricţii şi precizări == | ||
'''3 ⩽ n ⩽ 70.000''' | *'''3 ⩽ n ⩽ 70.000''' | ||
numerele de pe a doua linie a fișierului de intrare vor fi mai mici decât '''2.000.000.000''' | *numerele de pe a doua linie a fișierului de intrare vor fi mai mici decât '''2.000.000.000''' | ||
== Exemplul 1 == | == Exemplul 1 == | ||
; ijkin.txt | ; ijkin.txt |
Latest revision as of 22:43, 4 January 2024
Cerinţa[edit | edit source]
Se dă un şir a cu n numere naturale. Aflaţi numărul tripletelor (i,j,k), cu 1 ≤ i < j < k ≤ n, pentru care avem a[i] > a[j] < a[k].
Date de intrare[edit | edit source]
Fișierul de intrare ijk.in conține pe prima linie numărul n, iar pe a doua linie n numere naturale separate prin spații.
Date de ieșire[edit | edit source]
Fișierul de ieșire ijk.out va conține pe prima linie numărul tripletelor (i,j,k), cu 1 ⩽ i < j < k ⩽ n, pentru care avem a[i] > a[j] < a[k]'.
Restricţii şi precizări[edit | edit source]
- 3 ⩽ n ⩽ 70.000
- numerele de pe a doua linie a fișierului de intrare vor fi mai mici decât 2.000.000.000
Exemplul 1[edit | edit source]
- ijkin.txt
5 3 11 2 7 14
- ijkout.txt
5
Explicatie[edit | edit source]
Tripletele cu proprietatea cerută sunt: (1,3,4), (1,3,5), (2,3,4), (2,3,5), (2,4,5).
Exemplul 2[edit | edit source]
- ijkin.txt
1 1000000000
- ijkout.txt
Datele de intrare nu corespund restrictiilor impuse
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line> def verifica_restrictii(n, a):
if n < 3 or n > 70000: return False for numar in a: if numar < 0 or numar >= 2000000000: return False return True
def calculeaza_triplete(n, a):
numar_triplete = 0 for i in range(n): for j in range(i + 1, n): for k in range(j + 1, n): if a[i] > a[j] and a[j] < a[k]: numar_triplete += 1 return numar_triplete
def rezolva_problema():
with open('ijkin.txt', 'r') as fisier_intrare: n = int(fisier_intrare.readline()) a = list(map(int, fisier_intrare.readline().split()))
if verifica_restrictii(n, a): print("Datele de intrare corespund restrictiilor impuse") numar_triplete = calculeaza_triplete(n, a)
with open('ijkout.txt', 'w') as fisier_iesire: fisier_iesire.write(str(numar_triplete)) else: print("Datele de intrare nu corespund restrictiilor impuse")
rezolva_problema()
</syntaxhighlight>