Salut ma poate ajuta cineva cu problema asta ?

Date de intrare.

Pe prima linie se află două numere, N și M.

Pe următoarele linii se află N numere naturale, numerele de identificare a foilor aflate inițial pe masă(primul număr este asociat primei foi, al doilea număr este asociat celei de-a doua foi…).

Pe următoarele M linii se află operațiile ce trebuie făcute:
1 dacă trebuie extrasă prima foaie
2, urmat de o valoare X, dacă trebuie introdusă o nouă foaie la sfârșit, aceasta având numărul de identificare X.
Date de ieșire.
Pe prima linie se va afișa numărul de foi rămase pe biroul lui Andrei în urma executării celor M operații, iar pe a doua linie, numerele de identificare ale acestora.
Restricții

1 ≤ N ≤ 900 000
1 ≤ M ≤ 400 000
Numerele de identificare sunt cuprinse intre 0 și 10 000
Dacă șirul nu mai conține niciun element și trebuie efectuată o operație de tip 1, operația nu va fi efectuată.
Date de ieșire
Exemplu
Date de intrare Date de ieșire
4 3 5
30 21 81 26 21 81 26 68 64
2 68
2 64
1

Răspuns :

Răspuns:

#include <iostream>

using namespace std;

int main(){

int n, m, foi[1300001], i;

cin >> n;

cin >> m;

for(i = 0; i < n; i++) {

cin >> foi[i];

}

int op, numar, max_length = n, min_length = 0;

for(i = 0; i < m; i++) {

cin >> op;

if(op == 2) {

cin >> numar;

foi[max_length] = numar;

max_length++;

}else if (op == 1) {

if (min_length < max_length) {

min_length++;

}

}

}

cout << max_length-min_length;

cout << endl;

for(i = min_length; i < max_length; i++) {

cout << foi[i] << " ";

}

return 0;

}

Explicație: