# PBinfo #3543 – StringPushPop – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: Darius

## Enunț

Cerința
Se dă un string s. Asupra acestuia, se aplică 5 tipuri de operații:


(1, c) – se adaugă caracterul c la începutul string-ului
(2, c) – se adaugă caracterul c la finalul string-ului
(3)    – se șterge primul caracter al string-ului
(4)    – se șterge ultimul caracter al string-ului
(5)    – string-ul se va transforma în răsturnatul său

Să se afișeze string-ul rezultat după cele q operații.

Date de intrare
Programul citește de la tastatură string-ul s, numărul natural q si cele q query-uri.

Date de ieșire
Programul va afișa pe ecran string-ul rezultat.

Restricții și precizări

q si lungimea inițială a lui s sunt mai mici sau egale decat 100.000

Exemplu:
Intrare

fnic
7
1 a
3
4
1 o
2 b
5
1 p
Ieșire

pbinfo

## Cod sursă C++

```cpp
/// Solutie - Moca Andrei - 60p
#include <bits/stdc++.h>
using namespace std;
string s;
int q, op;
char c;
int main() {
    cin >> s >> q;
    while (q--) {
        cin >> op;
        if (op == 1)
            cin >> c, s = c + s;
        else if (op == 2)
            cin >> c, s = s + c;
        else if (op == 3)
            s.erase(s.begin());
        else if (op == 4)
            s.erase(s.begin() + s.size() - 1);
        else reverse(s.begin(), s.end());
    }
    cout << s;
    return 0;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/3543)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/3543/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-3543/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
