Cod sursa(job #2101349)

Utilizator tudoroprisTudor Opris tudoropris Data 7 ianuarie 2018 12:16:02
Problema Heapuri Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.05 kb
#include <fstream>
#include <vector>
#include <string>

using namespace std;

const int MaxN = 30001;

ifstream cin("queue.in");
ofstream cout("queue.out");

int n;
vector<int>vInit;
vector<int>vInv;

int nrfind(string str) {
	int nr0 = 0;
	for (int p = 10; p < str.size() - 1; p++) {
		nr0 = nr0 * 10 + str[p] - '0';
	}
	return nr0;
}

int main() {
	cin >> n;
	for (int i = 1; i <= n; ++i) {
		string S1;
		cin >> S1;
		if (S1[1] == 'o') {
			cout << i << ": ";
			if (vInv.size()) {
				cout << "pop(2) write(" << vInv.back() << ")\n";
				vInv.pop_back();
			}
			else if (vInit.empty()) {
				cout << '\n';
			}
			else {
				while (vInit.size() >= 2) {
					vInv.push_back(vInit.back());
					cout << "pop(1) push(2," << vInit.back() << ") ";
					vInit.pop_back();
				}
				cout << "pop(1) write(" << vInit.back() << ")\n";
				vInit.pop_back();
			}
		}
		else {
			int nr_curr = nrfind(S1);
			vInit.push_back(nr_curr);
			cout << i << ": read(" << nr_curr << ") push(1," << nr_curr << ")\n";
		}
	}
	return 0;
}