2857 - LOL: Difference between revisions

From Bitnami MediaWiki
No edit summary
Tag: visualeditor
No edit summary
Tag: visualeditor
Line 58: Line 58:
<syntaxhighlight lang="python" line="1">
<syntaxhighlight lang="python" line="1">
#2857 LOL
#2857 LOL


def conditii(n):
def conditii(n):
Line 64: Line 63:




def main():
def lol(n):
    n = int(input())
 
    if not conditii(n):
        return print("Datele de intrare nu corespund restricțiilor impuse.")
    print("Datele de intrare corespund restricțiilor impuse.")
 
     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)
     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 89: Line 82:


if __name__ == "__main__":
if __name__ == "__main__":
     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>

Revision as of 13:58, 29 April 2023

Cerința

Î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

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

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

  • 1 ≤ n ≤ 200.000

Exemplu 1

Intrare
6
A b
A c
A a
d A
e C
e C
Ieșire
A 900
B 0
C 0
D 0
E 0
a 0
b 0
c 0
d 450
e 550

Explicație

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

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

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

  1. 2857 LOL

def conditii(n):

   return 1 <= n <= 200_000


def lol(n):

   castig = dict.fromkeys(["A", "B", "C", "D", "E", "a", "b", "c", "d", "e"], 0)
   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()]
       castig[castigator] += valoare[invins]
       if valoare[castigator] <= 950:
           valoare[castigator] += 50
       if valoare[invins] >= 50:
           valoare[invins] -= 50
   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>