2857 - LOL: Difference between revisions
Pagină nouă: ==Cerința== În jocul League of Legends participă două echipe a câte <code>5</code> jucători notați <code>a,b,c,d,e</code>, respectiv <code>A,B,C,D,E</code>. Fiecare jucător are o valoare, inițial <code>300</code>, și un câștig, inițial <code>0</code>. În joc au loc lupte între perechi de jucători din echipe diferite, în urma fiecărei lupte fiind un învingător și un învins. După luptă, câștigul învingătorului crește cu valoarea învinsului, valoar... |
No edit summary |
||
(5 intermediate revisions by the same user not shown) | |||
Line 9: | Line 9: | ||
Programul citește de la tastatură numărul <code>n</code>, reprezentând numărul de lupte, iar pe linii separate vor fi perechi <code>x y</code>, însemnând <code>x</code> îl învinge pe <code>y</code>. | Programul citește de la tastatură numărul <code>n</code>, reprezentând numărul de lupte, iar pe linii separate vor fi perechi <code>x y</code>, însemnând <code>x</code> îl învinge pe <code>y</code>. | ||
==Date de ieșire== | ==Date de ieșire== | ||
Pe ecran se va afișa mesajul: "Datele de intrare corespund restricțiilor impuse." | |||
Pe următoarele rânduri vor fi afișate câștigul fiecărui jucător la finalul meciului. Afișarea va fi de forma: <code>L x</code> (<code>x</code> este câștigul jucătorului <code>L</code>). | |||
Î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 25: | Line 29: | ||
:e C | :e C | ||
;Ieșire | ;Ieșire | ||
:Datele de intrare corespund restricțiilor impuse. | |||
:A 900 | :A 900 | ||
:B 0 | :B 0 | ||
Line 49: | Line 54: | ||
:B c | :B c | ||
;Ieșire | ;Ieșire | ||
: | :Datele de intrare nu corespund restricțiilor impuse. | ||
==Rezolvare== | ==Rezolvare== | ||
<syntaxhighlight lang="python" line="1"> | <syntaxhighlight lang="python" line="1"> | ||
#2857 LOL | #2857 LOL | ||
def conditii(n): | def conditii(n): | ||
Line 60: | Line 64: | ||
def | def lol(n): | ||
# Câștigul inițial al fiecărui jucător este 0 | |||
castig = dict.fromkeys(["A", "B", "C", "D", "E", "a", "b", "c", "d", "e"], 0) | castig = dict.fromkeys(["A", "B", "C", "D", "E", "a", "b", "c", "d", "e"], 0) | ||
# Valoarea inițială al fiecărui jucător este 300 | |||
valoare = dict.fromkeys(["A", "B", "C", "D", "E", "a", "b", "c", "d", "e"], 300) | valoare = dict.fromkeys(["A", "B", "C", "D", "E", "a", "b", "c", "d", "e"], 300) | ||
Line 72: | Line 73: | ||
castigator, invins = [i for i in input().split()] | castigator, invins = [i for i in input().split()] | ||
# La câștigul jucătorului câștigător se adaugă valoarea jucătorului învins | |||
castig[castigator] += valoare[invins] | castig[castigator] += valoare[invins] | ||
# Valoarea maximă a unui jucător este 1000 | |||
if valoare[castigator] <= 950: | if valoare[castigator] <= 950: | ||
valoare[castigator] += 50 | valoare[castigator] += 50 | ||
# Valoarea minimă a unui jucător este 0 | |||
if valoare[invins] >= 50: | if valoare[invins] >= 50: | ||
valoare[invins] -= 50 | valoare[invins] -= 50 | ||
# Se afișează câștigul fiecărui jucător | |||
for membru in castig: | for membru in castig: | ||
print(membru, castig[membru]) | print(membru, castig[membru]) | ||
Line 84: | Line 89: | ||
if __name__ == "__main__": | if __name__ == "__main__": | ||
n = int(input()) | |||
if not conditii(n): | |||
print("Datele de intrare nu corespund restricțiilor impuse.") | |||
else: | |||
print("Datele de intrare corespund restricțiilor impuse.") | |||
lol(n) | |||
</syntaxhighlight> | </syntaxhighlight> |
Latest revision as of 07:54, 5 May 2023
Cerința[edit | edit source]
În jocul League of Legends participă două echipe a câte 5
jucători notați a,b,c,d,e
, respectiv A,B,C,D,E
. Fiecare jucător are o valoare, inițial 300
, și un câștig, inițial 0
. În joc au loc lupte între perechi de jucători din echipe diferite, în urma fiecărei lupte fiind un învingător și un învins.
După luptă, câștigul învingătorului crește cu valoarea învinsului, valoarea sa crește cu 50
de bani, fără să depășească 1000
de bani, iar valoarea învinsului scade cu 50
de bani, neputând deveni mai mică decât 0
.
Dându-se lista luptelor, să se determine câți bani va avea fiecare jucător la finalul meciului.
Date de intrare[edit | edit source]
Programul citește de la tastatură numărul n
, reprezentând numărul de lupte, iar pe linii separate vor fi perechi x y
, însemnând x
îl învinge pe y
.
Date de ieșire[edit | edit source]
Pe ecran se va afișa mesajul: "Datele de intrare corespund restricțiilor impuse."
Pe următoarele rânduri vor fi afișate câștigul fiecărui jucător la finalul meciului. Afișarea va fi de forma: L x
(x
este câștigul jucătorului L
).
Î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 | edit source]
1 ≤ n ≤ 200.000
Exemplu 1[edit | edit source]
- Intrare
- 6
- A b
- A c
- A a
- d A
- e C
- e C
- Ieșire
- Datele de intrare corespund restricțiilor impuse.
- A 900
- B 0
- C 0
- D 0
- E 0
- a 0
- b 0
- c 0
- d 450
- e 550
Explicație[edit | edit source]
A
învinge 3 inamici, d
îl învinge pe A
, câștigând 450
de bani, iar e
îl învinge pe C
de 2
ori, prima oară câștigând 300
apoi 250
de bani.
Exemplu 2[edit | edit source]
- Intrare
- 5000000
- A a
- A b
- A c
- B a
- B b
- B c
- Ieșire
- Datele de intrare nu corespund restricțiilor impuse.
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line="1">
- 2857 LOL
def conditii(n):
return 1 <= n <= 200_000
def lol(n):
# Câștigul inițial al fiecărui jucător este 0 castig = dict.fromkeys(["A", "B", "C", "D", "E", "a", "b", "c", "d", "e"], 0) # Valoarea inițială al fiecărui jucător este 300 valoare = dict.fromkeys(["A", "B", "C", "D", "E", "a", "b", "c", "d", "e"], 300)
for i in range(n): castigator, invins = [i for i in input().split()]
# La câștigul jucătorului câștigător se adaugă valoarea jucătorului învins castig[castigator] += valoare[invins]
# Valoarea maximă a unui jucător este 1000 if valoare[castigator] <= 950: valoare[castigator] += 50 # Valoarea minimă a unui jucător este 0 if valoare[invins] >= 50: valoare[invins] -= 50
# Se afișează câștigul fiecărui jucător for membru in castig: print(membru, castig[membru])
if __name__ == "__main__":
n = int(input())
if not conditii(n): print("Datele de intrare nu corespund restricțiilor impuse.") else: print("Datele de intrare corespund restricțiilor impuse.") lol(n)
</syntaxhighlight>