fbpx

Problema #2857 – LOL – Rezolvari PBInfo

de Mihai-Alexandru

Î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.

Cerința

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

Programul va afișa pe ecran, pe linii separate, câștigul fiecărui jucător la finalul meciului. Afișarea va fi de forma: L x (x este câștigul jucătorului L).

Restricții și precizări

  • 1 ≤ n ≤ 200.000
  • jucătorii vor fi afișați în ordine alfabetică – vezi exemplul
  • primii jucători afișați vor fi cei din echipa A,B,C,D,E – vezi exemplul
  • Succes în noul sezon!

Exemplu

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.

#include <bits/stdc++.h>
using namespace std;

struct perechi
{
    char ch;
    int val , bani;
}a[11];

bool litM(char c)
{
    return c >= 'A' && c <= 'E';
}

int main()
{
    a[1].ch = 'A' , a[1].val = 300 , a[1].bani = 0;
    a[2].ch = 'B' , a[2].val = 300 , a[2].bani = 0;
    a[3].ch = 'C' , a[3].val = 300 , a[3].bani = 0;
    a[4].ch = 'D' , a[4].val = 300 , a[4].bani = 0;
    a[5].ch = 'E' , a[5].val = 300 , a[5].bani = 0;
    a[6].ch = 'a' , a[6].val = 300 , a[6].bani = 0;
    a[7].ch = 'b' , a[7].val = 300 , a[7].bani = 0;
    a[8].ch = 'c' , a[8].val = 300 , a[8].bani = 0;
    a[9].ch = 'd' , a[9].val = 300 , a[9].bani = 0;
    a[10].ch = 'e' , a[10].val = 300 , a[10].bani = 0;
    int n;
    cin >> n;
    char s , t;
    for(int i = 1 ; i <= n ; ++i)
    {
        cin >> s >> t;
        int a1 , b;
        if(litM(s))
            a1 = s - 64;
        else
            a1 = s - 91;
        if(litM(t))
            b = t - 64;
        else
            b = t - 91;
        a[a1].bani += a[b].val , a[a1].val += 50;
        a[b].val -= 50;
        if(a[a1].val > 1000)
            a[a1].val = 1000;
        if(a[b].val < 0)
            a[b].val = 0;
    }
    for(int i = 1 ; i <= 10 ; ++i)
    {
        cout << a[i].ch << ' ' << a[i].bani << endl;
    }
    return 0;
}
Comentarii

S-ar putea sa iti placa