Fișierul intrare/ieșire | valutar.in, valutar.out | Sursă | OJI 2019 clasa a 7-a |
---|---|---|---|
Autor | Emanuela Cerchez | Adăugată de |
|
Timp de execuție pe test | 0.1 sec | Limită de memorie | 8192 KB |
Scorul tău | N/A | Dificultate |
Vezi soluțiile trimise | Statistici
Valutar (Clasa a 7-a)
Valutar este un joc care poate fi jucat de oricâți jucători. La începutul jocului, fiecare jucător primește L lei și E euro, precum și un jeton numerotat cu numărul jucătorului. Mai exact, dacă există M jucători, vor fi M jetoane, numerotate de la 1 la M.
Tabla de joc este harta unui oraș pe care este ilustrat un traseu circular ce conține N case de schimb valutar, numerotate în ordinea de pe traseu de la 1 la N. Fiind circular, după casa N urmează casa 1. Pentru fiecare casă de schimb valutar se cunosc două valori C și V ( C reprezintă câți lei plătește un jucător dacă vrea să cumpere 1 euro de la casa respectivă, iar V reprezintă câți lei primește jucătorul dacă vrea să vândă 1 euro). Fiecare casă are o anumită culoare în funcție de care jucătorul ajuns în punctul respectiv trebuie să efectueze o anumită acțiune astfel:
Culoare | Cod | Efect |
Alb | A | Jucătorul nu face nimic la această mutare. |
Roșu | R | Jucătorul primește un cartonaș denumit „pas”. Un jucător care are un cartonaș pas va folosi ulterior cartonașul (o singură dată, după care cartonașul va fi scos din joc) și astfel evită să execute o acțiune pe care nu poate să o execute, pentru a nu fi eliminat din joc. |
Galben | G | Jucătorul trebuie să cumpere i euro (unde i este numărul casei de schimb valutar la care se află). Dacă nu are suficienți lei pentru a face acest lucru și nu deține un cartonaș pas, jucătorul este eliminat din joc. Dacă are un cartonaș pas, jucătorul îl va folosi și nu va executa acțiunea, fără a fi eliminat din joc. |
Verde | V | Jucătorul trebuie să vândă i euro (unde i este numărul casei de schimb valutar la care se află). Dacă nu are suficienți euro pentru a face acest lucru și nu deține un cartonaș pas, jucătorul este eliminat din joc. Dacă are un cartonaș pas, jucătorul îl va folosi și nu va executa acțiunea, fără a fi eliminat. |
Inițial toți jucătorii pornesc de la casa de schimb valutar 1 care este albă. Există N case de schimb valutar și M jucători. Jucătorii mută pe rând în ordinea jetoanelor. Mai întâi mută jucătorul 1, apoi 2, 3, …, M. După jucătorul M va muta din nou 1 etc. La o mutare, un jucător care nu a fost eliminat din joc:
- „dă” cu zarul electronic; zarul va afișa un număr întreg nr;
- avansează cu nr poziții (adică dacă jetonul său este la casa i va ajunge la casa i+nr);
- execută acțiunea asociată casei de schimb valutar în care a ajuns, în funcție de culoarea acesteia.
Zarul electronic funcționează astfel: la mutarea cu numărul j este generat numărul nrj calculat după formula nrj = ( a x nrj-1+ b)% N + 1, unde nrj-1 este numărul generat la mutarea j-1; a, b și nr0 sunt trei valori cunoscute, iar % reprezintă restul împărțirii întregi (mod).
Cerință:
Scrieți un program care să rezolve următoarele cerințe:
- determină numărul de jucători existenți în joc după X mutări;
- determină jucătorul care a rămas în joc și care are cea mai mare sumă de Euro după X mutări.
Date de intrare
Fișierul de intrare valutar.in conține pe prima linie cerința care trebuie să fie rezolvată (1 sau 2).
Pe a doua linie se află numerele naturale a, b și nr0, cu semnificația din enunț.
Pe a treia linie se află numerele naturale N, M, L, E, X, reprezentând numărul de case de schimb valutar, numărul de jucători, câți lei și câți euro primește fiecare jucător la începutul jocului, respectiv numărul de mutări din joc. Pe următoarele N linii sunt descrise casele de schimb valutar, câte o casă pe o linie, în ordinea de la 1 la N, sub forma Cod C V, cu semnificațiile din enunț. Valorile scrise pe aceeași linie sunt separate prin câte un spațiu.
Date de ieșire
Fișierul de ieșire valutar.out va conține o singură linie. Dacă cerința este 1, linia va conține un număr natural reprezentând numărul de jucători existenți în joc după X mutări. Dacă cerința este 2, linia va conține numărul jetonului jucătorului rămas în joc și care are cea mai mare sumă de euro după X mutări.
Restricții
- 1 ≤ M, C, V ≤ 100
- 1 ≤ a, b, nr0, N, X ≤ 10000
- 1 ≤ L, E ≤ 106
- Toate casele de schimb valutar au suficienți lei și euro pentru efectuarea oricărei acțiuni.
- Se garantează că pentru datele de test la cerința 2 va rămâne în joc după X mutări un singur jucător cu suma maximă de euro.
- Pentru fiecare cerință se acordă 50% din punctajul obținut pe teste.
Exemplu
valutar.in | valutar.out |
---|---|
1 3 2 7 5 3 2 3 8 A 1 1 G 5 4 G 6 4 V 6 5 R 2 3 |
1 |
2 3 2 7 5 3 2 3 8 A 1 1 G 5 4 G 6 4 V 6 5 R 2 3 |
2 |
Explicație
Numerele care se obțin când se dă cu zarul se generează astfel: nrj =( 3 nrj-1 + 2)% 5+1, unde nr0 = 7.
Există în joc 5 case de schimb valutar și 3 jucători. Toți jucătorii au inițial 2 lei și 3 euro și se află la casa de schimb valutar 1 care este albă. Se efectuează 8 mutări astfel:
Mutare | Jucător | nr | De unde pleacă | Unde ajunge | Acțiune | Lei | Euro | Obs. |
---|---|---|---|---|---|---|---|---|
1 | 1 | 4 | 1 | 5 | R | 2 | 3 | A primit un cartonaș pas |
2 | 2 | 5 | 1 | 1 | A | 2 | 3 | Nu face nimic |
3 | 3 | 3 | 1 | 4 | V | 2 | 3 | Trebuie să vândă 4 euro, dar nu are decât 3, nu are cartonaș pas, deci este scos din joc. |
4 | 1 | 2 | 5 | 2 | G | 2 | 3 | Trebuie să cumpere 2 euro, care costă 2*5=10 lei, el nu are destui bani, dar are un cartonaș pas pe care îl folosește, deci rămâne în joc |
5 | 2 | 4 | 1 | 5 | R | 2 | 3 | A primit un cartonaș pas |
6 | 1 | 5 | 2 | 2 | G | 2 | 3 | Trebuie să cumpere 2 euro, care costă 2*5=10 lei, el nu are destui bani, nu mai are niciuun cartonaș, deci este eliminat din joc |
7 | 2 | 3 | 5 | 3 | G | 2 | 3 | Trebuie să cumpere 3 euro care ar costa 6*3=18 lei, nu are bani dar are un cartonaș pas pe care îl folosește și nu este eliminat din joc |
8 | 2 | 2 | 3 | 5 | R | 2 | 3 | Primește un cartonaș pas |