Lista de probleme 633

Filtrare

Dificultate

Operații intrare/ieșire


Etichete

La un supermarket există două case de marcat la care clienții își pot plăti cumpărăturile. Când intră în magazin, fiecare client primește un număr unic. Când aceștia vor să plătească, se așază la rând la una dintre cele două case. Clienții sunt procesați pe rând, în ordinea venirii lor.
Scrieți un program care procesează cozile de la casele de marcat. Acest program primește N instrucțiuni pe care trebuie să le execute. Aceste instrucțiuni pot fi de următoarele 4 tipuri:

  • 1 – S-a eliberat casa de marcat numărul 1. Trebuie afișat numărul clientului care urmează la rând; dacă nu este nimeni la coadă la casa respectivă, se va afișa -1.
  • 2 – S-a eliberat casa de marcat numărul 2. Trebuie afișat numărul clientului care urmează la rând; dacă nu este nimeni la coadă la casa respectivă, se va afișa -1.
  • 3 x – Clientul cu numărul x se așază la coadă la casa la care așteaptă mai puțini clienți; dacă la ambele case așteaptă același număr de clienți, atunci clientul cu numărul x se va așeza la coadă la casa 1; trebuie afișată coada la care se așază clientul x. Se garantează că acest client nu este deja așezat la vreun la rând.
  • 4 x – Clientul cu numărul x părăsește rândul la care așteaptă (se garantează că era deja la un rând); în acest caz nu trebuie afișat nimic.

Olimpiada Municipală Iași, clasa a X-a

#2894 Barlog

Este anul 2019, dar Zmeul-Cel-Rău și Făt-Frumos luptă în continuare. Zmeul l-a prins pe Făt-Frumos şi l-a închis în una dintre camerele bârlogului său. Un bârlog de zmeu are forma unui tablou bidimensional, în care camerele sunt plasate sub forma a n linii și m coloane. Vom numerota liniile de la 1 la n, iar coloanele de la 1 la m, astfel că fiecare cameră poate fi identificată prin numărul liniei și al coloanei pe care se află.

Orice cameră are patru pereți și câte o ușă pe fiecare perete prin care poate comunica cu camerele învecinate. Mai exact, camera de pe linia i și coloana j poate comunica cu camerele (i-1,j), (i,j+1), (i+1,j), (i,j-1) (desigur, dacă acestea există). Fiecare cameră are asociat un cod. Ușile din orice cameră se pot deschide cu o cartelă magnetică. Dacă codul camerei este un subșir al cuvântului memorat pe cartela magnetică, atunci ușile din camera respectivă se vor deschide folosind cartela. Ileana Cosânzeana a reușit să-i trimită lui Făt-Frumos o cartelă magnetică.

Scrieți un program care rezolvă următoarele două cerințe:
1. determină numărul de camere în care ar putea ajunge Făt-Frumos folosind cartela primită de la Ileana Cosânzeana;
2. determină numărul minim de camere prin care trece Făt-Frumos pentru a ieși din bârlogul zmeului (adică poate deschide ușa unei camere prin care ajunge în exteriorul bârlogului).

Olimpiada Municipală Iași, clasa a X-a

#2716 UnuDoi

Se dă operația \( \overline{x} : \left\{ 1,2 \right\} \rightarrow \left\{ 1,2 \right\}\) astfel încât \( \overline{1}=2 \) și \( \overline{2}=1 \). Operația se poate extinde asupra oricărei secvențe formate cu cifre de 1 și 2, de exemplu \( \overline{121121212}= 212212121\).

Se consideră șirul infinit s format cu cifre de 1 și 2, generat incremental prin extindere, după următoarea regulă de concatenare:

  • \( s_1 = 1221 \)
  • \( s_2 = 1221211221121221 \)
  • \( s_{k+1} = s_k\overline{s_k}\overline{s_k}s_k \), pentru orice număr natural k.

Dându-se un număr natural n, să se determine a n-a cifră a șirului infinit s.

#2878 prev_perm C++

Scrieți definiția completă a subprogramului C++:

void prev_perm(int n, int P[]);

Subprogramul are doi parametri:

  • n – prin care primește un număr natural
  • P – prin care primește un tablou unidimensional cu n elemente ce reprezintă o permutare a mulțimii {1,2,...,n}.

Subprogramul întoarce prin parametrul P permutarea anterioară din punct de vedere lexicografic.

#2869 Tabela

Macaraie, pasionat de numere, dar mai ales de matrici, începe într-o zi să umple o foaie infinită de matematică cu numere astfel: în colțul aflat în stânga sus (de coordonate (1, 1)) pune 0, apoi scrie de la stânga la dreapta și de sus în jos cel mai mic număr care nu apare pe linia și coloana respectivă. Dându-se linia și coloana unei căsuțe din tabelă, aflați numărul de la acea poziție.

#2525 Cioc

Cioc, un elev abia aterizat în clasa a IX-a, primește de la doamna profesor de informatică un șir de n numere naturale pe care trebuie să îl prelucreze. Astfel, băiatul trebuie să scrie după fiecare dintre cele k cele mai mici elemente dublul lor. Dacă cel mai mare dintre aceste numere se repetă și deja se depășesc cele k elemente prevăzute, doamna profesor îi dă libertatea băiatului de a modifica valoarea lui k astfel încât să cuprindă și aceste valori. De exemplu, dacă n = 7, v[] = {1, 4, 6, 2, 3, 4, 5} și k = 4, atunci, în urma prelucrării, șirul v devine {1, 2, 4, 8, 6, 2, 4, 3, 6, 4, 8, 5}, și deci \( k_{final}=5 \).

Cunoscându-se n, șirul v și k, să se afișeze:

  • Numărul \( k_{final} \);
  • Vectorul după prelucrare.

Best of CNCV / Warmup Round

Josephus și prietenii lui s-au gândit la un joc. Ei se așează într-un cerc și își scriu pe rând pe frunte câte un număr, reprezentând indicativul fiecăruia (1, 2, …, n). Toți au la îndemână un marker roșu. Jocul începe de la jucătorul cu numărul 1, care îl va marca cu un X pe cel aflat imediat în stânga sa și care nu a fost deja marcat, apoi următorul nemarcat îi va trece un X pe frunte celui din stânga sa și tot așa, până când va rămâne o singură persoană nemarcată, aceasta fiind considerată câștigătoare.

Best of CNCV /w '18 - '19

Se consideră o listă circulară simplu înlănțuită, alocată dinamic, cu n elemente, numere naturale citite de la tastatură; primul element al acestei liste este considerat element curent. Se citesc m numere naturale și pentru fiecare se aplică următoarea operație:

  • pentru numărul citit x elementul curent al listei avansează cu x poziții;
  • după elementul curent actual se inserează dublul său și elementul inserat devine element curent.

Să se afișeze elementele listei după cele m operații. Afișarea începe cu elementul care a fost element curent imediat după citire.

#2861 puncte4

Zăhărel a desenat pe o foaie de hârtie N puncte în plan. Curios din fire, şi-a ales încă M puncte pe axa OX şi s-a întrebat pentru fiecare dintre cele M puncte de pe axa Ox care dintre cele N puncte este cel mai apropiat (situat la distanță minimă). Se consideră că distanța dintre două puncte (x1, y1) şi (x2, y2) este (x1-x2)2 + (y1-y2)2. Scrieți un program pentru Zăhărel care să determine pentru fiecare dintre cele M puncte de pe axa OX, care este distanța la cel mai apropiat punct dintre cele N desenate pe hârtie.

Se citește numărul n și apoi n articole cu structura prenume nume salariu vârstă funcție număr_de_telefon email. Fiecare articol este plasat pe câte o linie, câmpurile sale fiind separate prin câte un spațiu. Câmpurile salariu și vârstă conțin numere naturale, celelalte conțin șiruri de caractere.

Se citește apoi un număr natural p cuprins între 1 și 7 și un caracter c care poate fi + sau -.

Se cere ordonarea celor n articole în funcție de p și c, astfel:

  • dacă p=1, ordonarea se face după prenume; dacă p=2, ordonarea se face după nume; dacă p=3, ordonarea se face după salariu; dacă p=4, ordonarea se face după vârstă; dacă p=5, ordonarea se face după funcție; dacă p=6, ordonarea se face după număr_de_telefon; dacă p=7, ordonarea se face după email;
  • dacă c are valoarea +, ordonarea va fi crescătoare, iar dacă c are valoarea -, ordonarea va fi descrescătoare;
  • dacă două articole au aceeași valoare a câmpului în raport cu care se face sortarea, ordinea lor nu se va modifica.