Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Bitnami MediaWiki
Search
Search
Create account
Log in
Personal tools
Create account
Log in
Pages for logged out editors
learn more
Contributions
Talk
Editing
3583 - jetoane
Page
Discussion
English
Read
Edit
Edit source
View history
Tools
Tools
move to sidebar
hide
Actions
Read
Edit
Edit source
View history
General
What links here
Related changes
Special pages
Page information
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
== Enunț == Ionel şi Georgel colecţionează jetoane care se găsesc în revistele Scooby-Doo. Jetoanele au înscrise pe ele diferite valori, numere naturale distincte, un copil neputând avea două sau mai multe jetoane cu aceeaşi valoare. Ei propun următorul joc: având în faţă jetoanele proprii, determină împreună care este jetonul de valoare comună cu cea mai mică valoare înscrisă şi jetonul de valoare comună cu cea mai mare valoare înscrisă. După ce au identificat aceste jetoane, câştigătorul este acela care va avea cele mai multe jetoane după eliminarea acelora cu valori cuprinse între minimul şi maximul comun, inclusiv minimul şi maximul. == Cerința == Determinaţi valorile minimă şi maximă comune, precum şi câştigătorul jocului. == Date de intrare == Fişierul de intrare jetoanein.txt conţine pe prima linie două numere naturale separate printr-un singur spaţiu, m şi n reprezentând numărul de jetoane ale primului copil şi respectiv numărul de jetoane ale celui de-al doilea copil. Pe următoarea linie sunt m+n valori separate prin câte un spaţiu, ce reprezintă jetoanele primului şi apoi jetoanele celui de-al doilea copil. == Date de ieșire == Fişierul de ieșire jetoaneout.txt conţine pe prima linie trei valori întregi Min Max C separate prin câte un spaţiu, unde Min este valoarea minimă comună, Max este valoarea maximă comună, iar C va fi 0, dacă jocul se încheie la egalitate, 1 dacă va câştiga primul copil, sau 2, dacă va câştiga cel de-al doilea copil. == Restricții și precizări == * 1 ⩽ '''n, m''' ⩽ 28.000 * 1 ⩽ '''valoarea de pe un jeton''' ⩽ 50.000 * Vor exista cel puţin două valori comune == Exemplul 1 == ; Intrare ; jetoanein.txt : 10 6 : 1 3 2 4 7 5 8 19 27 9 3 8 80 6 18 19 ; Ieșire : Datele de intrare corespund restricțiilor impuse ; jetoaneout.txt : 3 19 1 === Explicație === Jetonul comun cel mai mic este cel cu valoarea 3, iar cel mai mare are valoarea 19. Primul rămâne cu 3 jetoane (acestea sunt 1, 2, 27) şi al doilea rămâne cu unul singur (jetonul 80), deci jucătorul 1 este câştigător. == Exemplul 2 == ; Intrare ; jetoanein.txt : 4 5 : 6 7 1 90 6 7 68 1 3 ; Ieșire : Datele de intrare corespund restricțiilor impuse ; jetoaneout.txt : 1 7 0 === Explicație === Jetonul comun cel mai mic este cel cu valoarea 1, iar cel mai mare are valoarea 7. Primul rămâne cu un jeton (acesta este 90) şi al doilea rămâne cu unul singur (jetonul 68), deci egalitate. == Exemplul 3 == ; Intrare ; jetoanein.txt : 4 28001 : 6 7 1 90 6 7 68 1 3 ; Ieșire : Datele de intrare NU corespund restricțiilor impuse == Rezolvare == <syntaxhighlight lang="python" line> #3583 - Jetoane def valideaza_input(m, n, jetoane): # Funcție de validare a datelor de intrare conform restricțiilor if not (0 < m <= 28000 and 0 < n <= 28000): return False if len(jetoane) != m + n: return False return all(0 < val <= 50000 for val in jetoane) def gaseste_valori_comune(jetoane1, jetoane2): # Funcție pentru găsirea valorilor comune dintre cei doi copii valori_comune = set(jetoane1) & set(jetoane2) return valori_comune def determina_castigator(jetoane_copil1, jetoane_copil2, valori_comune): # Funcție pentru determinarea câștigătorului jetoane_ramase_copil1 = [val for val in jetoane_copil1 if val not in valori_comune] jetoane_ramase_copil2 = [val for val in jetoane_copil2 if val not in valori_comune] if len(jetoane_ramase_copil1) > len(jetoane_ramase_copil2): return 1 elif len(jetoane_ramase_copil1) < len(jetoane_ramase_copil2): return 2 else: return 0 def main(): # Citirea datelor din fișierul de intrare with open("jetoanein.txt", "r") as infile: m, n = map(int, infile.readline().split()) jetoane = list(map(int, infile.readline().split())) # Validare date de intrare if valideaza_input(m, n, jetoane): print("Datele de intrare corespund restricțiilor impuse") else: print("Datele de intrare NU corespund restricțiilor impuse") exit(0) # Separarea jetoanelor pentru fiecare copil jetoane_copil1 = jetoane[:m] jetoane_copil2 = jetoane[m:] # Găsirea valorilor comune valori_comune = gaseste_valori_comune(jetoane_copil1, jetoane_copil2) # Determinarea valorilor minimă și maximă comune valoare_minima_comuna = min(valori_comune) valoare_maxima_comuna = max(valori_comune) # Determinarea câștigătorului și scrierea rezultatelor în fișierul de ieșire castigator = determina_castigator(jetoane_copil1, jetoane_copil2, valori_comune) with open("jetoaneout.txt", "w") as outfile: outfile.write(f"{valoare_minima_comuna} {valoare_maxima_comuna} {castigator}\n") if __name__ == "__main__": main() </syntaxhighlight>
Summary:
Please note that all contributions to Bitnami MediaWiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Bitnami MediaWiki:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Toggle limited content width