0997 - Reuniune: Difference between revisions

From Bitnami MediaWiki
Pagină nouă: ==Cerința== Se dau două mulțimi de numere naturale. Să se afișeze reuniunea lor. ==Date de intrare== Fişierul de intrare <code>reuniune.in</code> conţine pe prima linie numerele <code>n m</code>, reprezentând numărul de elemente din fiecare mulţime. Linia a doua conţine <code>n</code> numere naturale diferite, ordonate crescător, reprezentând elementele primei mulțimi. Linia a treia conţine <code>m</code> numere naturale diferite, ordonate crescător, reprez...
Tag: visualeditor
 
No edit summary
Tag: visualeditor
 
(4 intermediate revisions by the same user not shown)
Line 10: Line 10:


==Date de ieșire==
==Date de ieșire==
Fişierul de ieşire <code>reuniune.out</code> va conţine pe prima linie elementele reuniunii celor două mulțimi, în ordine crescătoare, separate prin exact un spațiu.
Pe ecran se va afișa mesajul: "Datele de intrare corespund restricțiilor impuse."
 
Pe următorul rând se va afișa elementele reuniunii celor două mulțimi, în ordine crescătoare, separate prin exact un spațiu.
 
În cazul în care datele introduse de la tastatură nu îndeplinesc cerințele enunțate, pe ecran se va afișa mesajul "Datele de intrare nu corespund restricțiilor impuse."


==Restricții și precizări==
==Restricții și precizări==
Line 24: Line 28:
:3 5 10 37
:3 5 10 37
;Ieșire
;Ieșire
:Datele de intrare corespund restricțiilor impuse.
:1 3 4 5 7 10 37 43
:1 3 4 5 7 10 37 43


Line 32: Line 37:
:3 37 10 5
:3 37 10 5
;Ieșire
;Ieșire
:Date de intrare gresite!
:Datele de intrare nu corespund restricțiilor impuse.


==Rezolvare==
==Rezolvare==
Line 60: Line 65:




def main():
def reuniune(multimea_n, multimea_m):
    # sorted() este o funcție built-in care sortează (implicit crescător) o listă de elemente (în acest caz, numere)
    # set() este o funcție built-in care combină elemente mai multor liste, ignorând orice duplicate
    rezultat = sorted(set(multimea_n + multimea_m))
    print(" ".join([str(x) for x in rezultat]))
 
 
if __name__ == "__main__":
     n, m = [int(x) for x in input().split()]
     n, m = [int(x) for x in input().split()]


Line 67: Line 79:


     if not conditii(n, m, multimea_n, multimea_m):
     if not conditii(n, m, multimea_n, multimea_m):
         return print("Date de intrare gresite!")
         print("Datele de intrare nu corespund restricțiilor impuse.")
 
     else:
     reuniune = sorted(set(multimea_n + multimea_m))
        print("Datele de intrare corespund restricțiilor impuse.")
 
        reuniune(multimea_n, multimea_m)
    print(" ".join([str(x) for x in reuniune]))
 
 
if __name__ == "__main__":
    main()


</syntaxhighlight>
</syntaxhighlight>

Latest revision as of 08:50, 5 May 2023

Cerința[edit]

Se dau două mulțimi de numere naturale. Să se afișeze reuniunea lor.

Date de intrare[edit]

Fişierul de intrare reuniune.in conţine pe prima linie numerele n m, reprezentând numărul de elemente din fiecare mulţime.

Linia a doua conţine n numere naturale diferite, ordonate crescător, reprezentând elementele primei mulțimi.

Linia a treia conţine m numere naturale diferite, ordonate crescător, reprezentând elementele celei de-a doua mulțimi.

Date de ieșire[edit]

Pe ecran se va afișa mesajul: "Datele de intrare corespund restricțiilor impuse."

Pe următorul rând se va afișa elementele reuniunii celor două mulțimi, în ordine crescătoare, separate prin exact un spațiu.

În cazul în care datele introduse de la tastatură nu îndeplinesc cerințele enunțate, pe ecran se va afișa mesajul "Datele de intrare nu corespund restricțiilor impuse."

Restricții și precizări[edit]

  • 1 ≤ n , m ≤ 1000
  • elementele celor două mulțimi vor fi mai mici decât 1 000 000 000

Exemplu 1[edit]

Intrare
6 4
1 3 4 7 10 43
3 5 10 37
Ieșire
Datele de intrare corespund restricțiilor impuse.
1 3 4 5 7 10 37 43

Exemplu 2[edit]

Intrare
6 4
7 10 43 1 3 4
3 37 10 5
Ieșire
Datele de intrare nu corespund restricțiilor impuse.

Rezolvare[edit]

<syntaxhighlight lang="python" line="1">

  1. 0997 Reuniune


def conditii(n, m, multimea_n, multimea_m):

   if not all((
       1 <= n <= 1_000,
       1 <= m <= 1_000,
       len(multimea_m) == m,
       multimea_m == sorted(multimea_m),
       len(multimea_n) == n,
       multimea_n == sorted(multimea_n),
   )):
       return False
   for i in multimea_n:
       if not i < 1_000_000_000:
           return False
   for i in multimea_m:
       if not i < 1_000_000_000:
           return False
   return True


def reuniune(multimea_n, multimea_m):

   # sorted() este o funcție built-in care sortează (implicit crescător) o listă de elemente (în acest caz, numere)
   # set() este o funcție built-in care combină elemente mai multor liste, ignorând orice duplicate
   rezultat = sorted(set(multimea_n + multimea_m))
   print(" ".join([str(x) for x in rezultat]))


if __name__ == "__main__":

   n, m = [int(x) for x in input().split()]
   multimea_n = [int(x) for x in input().split()]
   multimea_m = [int(x) for x in input().split()]
   if not conditii(n, m, multimea_n, multimea_m):
       print("Datele de intrare nu corespund restricțiilor impuse.")
   else:
       print("Datele de intrare corespund restricțiilor impuse.")
       reuniune(multimea_n, multimea_m)

</syntaxhighlight>