#include <iostream>#include <string>#include <map>using namespace std;#define SIZE 100map<int, int> f, u;void request(int ms){ if (ms == 0) { cout << "errro" << endl; return ; } bool bsuccess = false; for (auto it = f.begin(); it != f.end(); it ++) { // find bigger free mem if (ms <= it->second) { int a = it->first + ms, b = it->second - ms; cout << it->first << endl; // update used mem u.insert({it->first, ms}); // erase old mem f.erase(it); // insert new f.insert({a, b}); bsuccess = true; break; } } if (!bsuccess) cout << "error" << endl;}void release(int ms){ auto iter = u.find(ms); if (iter == u.end()) { cout << "error" << endl; return ; } int e = iter->first + iter->second; bool bfind = false; for (auto it = f.begin(); it != f.end(); it ++) { if (e == it->first) { int a = iter->first, b = it->second + iter->second; f.insert({a, b}); f.erase(it); bfind = true; } } if (!bfind) f.insert({iter->first, iter->second}); else { auto pre = f.begin(); for (auto it = f.begin(); it != f.end(); it ++) { if (it == f.begin()) continue; if (pre->first + pre->second == it->first) { pre->second += it->second; f.erase(it); break; } pre = it; } } u.erase(iter);}int getNum(const string& s){ int i=0; while (s[i] != '=') i++; i++; int num = 0; while (i < s.size()) num = num * 10 + (int)(s[i] - '0'), i++; return num;}int main(){ f.insert({0, SIZE}); int n; cin >> n; string op; while (n--) { cin >> op; int ms = getNum(op); if (op[2] == 'Q') request(ms); else release(ms); } return 0;}