Răspuns :
► Rezolvare STL - recomandat :
#include <iostream>
#include <queue>
using namespace std;
int main() {
queue<int> coada;
int n, m, tip_instructiune, foaie_curenta;
//Citeste n, m :
cin >> n >> m;
//Citeste foile initiale
for (int i = 1; i <= n; i++) {
//Citeste foaia curenta
cin >> foaie_curenta;
//Adauga in coada
coada.push(foaie_curenta);
}
//Fa cele m operatii
for (int i = 1; i <= m; i++) {
//Citeste codul instructiunii
cin >> tip_instructiune;
//Daca e instructiune de semnare elimina primul element din capul cozii
if (tip_instructiune == 1) {
coada.pop();
}
//Altfel citeste foaia curenta si adauga la finalul cozii
else {
cin >> foaie_curenta;
coada.push(foaie_curenta);
}
}
//Afiseaza folie ramase
//Cat timp exsita elemente in coada
while (!coada.empty()) {
//Afiseaza elementul din capul cozii
cout << coada.front() << " ";
//Sterge elementul din capul cozii
coada.pop();
}
}
► Explicatie :
Coada este o structura de date extrem de importanta care apare in multe probleme. Din acest motiv, in Standard Template Library din C++ exista implementata deja clasa queue care reprezinta o coada.
► Operatii :
◘ Declarare coada (trebuie inclusa biblioteca <queue>)
queue<tip_date> nume_coada; → Declara o coada care retine elemente de tip tip_date (in cazul nostru in problema int) cu numele nume_coada (in cazul nostru coada).
◘ Adaugare element la finalul cozii
nume_coada.push(element) → Adauga valoarea lui element la finalul cozii
◘ Aflare care e elementul din capul cozii
nume_coada.front() → Returneaza elementul din capul cozii
◘ Stergere element din capul cozii
nume_coada.pop() → Sterge elementul din capul cozii.
◘ Verificare daca coada e goala
nume_coada.empty() → Returneaza true daca coada e goala, false altfel.
Pentru toate operatiile suportate de queue<> in c++ iti recomand sa citesti documentatia online.
► Solutie simpla, fara coada din STL (implementat manual, scoalareste) :
https://brainly.ro/tema/8870756