Salut ma puteti ajuta cu problema asta de 3 zile incerc sa o rezolv si nu imi iese.
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 intrare Date de ieșire
4 3 5
30 21 81 26 21 81 26 68 64
2 68
2 64
1
Trebuie rezolvata numai cu vecrtori if for sau while.
Răspunsuri la întrebare
Răspuns de
1
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:
jackoneill302:
Salut multumesc dar Problema ruleza in ciclu infinit.
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;
}
Alte întrebări interesante
Limba română,
8 ani în urmă
Limba română,
8 ani în urmă
Matematică,
8 ani în urmă
Limba română,
8 ani în urmă
Limba română,
8 ani în urmă
Engleza,
9 ani în urmă
Limba română,
9 ani în urmă
Matematică,
9 ani în urmă