Î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.
Cum e corect?
cout < "As la info";
cout << "As la info";
cout >> "As la info";
Felicitări! Poți mai mult?
Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.
Greșit, dar nu-i bai!
Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.
Rezolvare
Iată rezolvarea de 100 de puncte pentru problema LOL:
#include <iostream>
using namespace std;
long long val[15],win[15],n;
char a[15],x,y;
int main(){
for(char i='A';i<='E';i++){
a[i-'A']=i;
val[i-'A']=300;
}
for(char i='a';i<='e';i++){
a[i-'a'+('E'-'A'+1)]=i;
val[i-'a'+('E'-'A'+1)]=300;
}
cin>>n;
for(int i=1;i<=n;i++){
cin>>x>>y;
///Cautam valorile
for(int j=0;j<=9;j++){
if(a[j]==x){
x=j;
break;
}
}
for(int j=0;j<=9;j++){
if(a[j]==y){
y=j;
break;
}
}
///Castiguri
win[(int)x]+=val[(int)y];
///Balansari
if(val[(int)x]<=950){
val[(int)x]+=50;
}
if(val[(int)y]>=50){
val[(int)y]-=50;
}
}
for(int i=0;i<=9;i++){
cout<<a[i]<<' '<<win[i]<<'\n';
}
return 0;
}
Atenție
Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa .
Rezolvarea problemei #2857 LOL
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #2857 LOL de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.
Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!