/*
* Люди стоят в очереди, но никогда не уходят из её начала, зато могут приходить в конец и уходить оттуда.
* Более того, иногда некоторые люди могут прекращать и начинать беспокоиться из-за того, что очередь не продвигается.
*
* Реализуйте обработку следующих операций над очередью:
* WORRY i: пометить i-го человека с начала очереди (в нумерации с 0) как беспокоящегося;
* QUIET i: пометить i-го человека как успокоившегося;
* COME k: добавить k спокойных человек в конец очереди;
* COME -k: убрать k человек из конца очереди;
* WORRY_COUNT: узнать количество беспокоящихся людей в очереди.
* Изначально очередь пуста.
*
* Формат ввода
* Количество операций Q, затем описания операций.
* Для каждой операции WORRY i и QUIET i гарантируется, что человек с номером i существует в очереди на момент операции.
* Для каждой операции COME -k гарантируется, что k не больше текущего размера очереди.
*
* Формат вывода
* Для каждой операции WORRY_COUNT выведите одно целое число — количество беспокоящихся людей в очереди.
*/
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main(){
int Q=0;
cin >> Q;
vector<bool> crowd(0,0);
string command=""s;
unsigned number=0;
int worry=0;
int persCome=0;
while ( Q>0 ){
cin>>command;
if(command=="WORRY_COUNT"s){
for(bool i :crowd){
if(i){
++worry;
}
}
cout<<worry<<endl;
worry=0;
}
if(command=="WORRY"s){
cin>>number;
if(number < crowd.size()){
crowd.at(number)=true;
}
}
if(command=="QUIET"s){
cin>>number;
if(number<crowd.size()){
crowd.at(number)=false;
}
}
if(command=="COME"s){
cin>>persCome;
int size = crowd.size()+persCome;
if(size<=0){
crowd.clear();
}
if(size>crowd.size()){
crowd.resize(size,false);}
else{crowd.resize(size);}
}
--Q;
}
return 0;
}
LyoKICog0JvRjtC00Lgg0YHRgtC+0Y/RgiDQsiDQvtGH0LXRgNC10LTQuCwg0L3QviDQvdC40LrQvtCz0LTQsCDQvdC1INGD0YXQvtC00Y/RgiDQuNC3INC10ZEg0L3QsNGH0LDQu9CwLCDQt9Cw0YLQviDQvNC+0LPRg9GCINC/0YDQuNGF0L7QtNC40YLRjCDQsiDQutC+0L3QtdGGINC4INGD0YXQvtC00LjRgtGMINC+0YLRgtGD0LTQsC4gCiAqINCR0L7Qu9C10LUg0YLQvtCz0L4sINC40L3QvtCz0LTQsCDQvdC10LrQvtGC0L7RgNGL0LUg0LvRjtC00Lgg0LzQvtCz0YPRgiDQv9GA0LXQutGA0LDRidCw0YLRjCDQuCDQvdCw0YfQuNC90LDRgtGMINCx0LXRgdC/0L7QutC+0LjRgtGM0YHRjyDQuNC3LdC30LAg0YLQvtCz0L4sINGH0YLQviDQvtGH0LXRgNC10LTRjCDQvdC1INC/0YDQvtC00LLQuNCz0LDQtdGC0YHRjy4KICogCiAqINCg0LXQsNC70LjQt9GD0LnRgtC1INC+0LHRgNCw0LHQvtGC0LrRgyDRgdC70LXQtNGD0Y7RidC40YUg0L7Qv9C10YDQsNGG0LjQuSDQvdCw0LQg0L7Rh9C10YDQtdC00YzRjjoKICogIFdPUlJZIGk6INC/0L7QvNC10YLQuNGC0YwgaS3Qs9C+INGH0LXQu9C+0LLQtdC60LAg0YEg0L3QsNGH0LDQu9CwINC+0YfQtdGA0LXQtNC4ICjQsiDQvdGD0LzQtdGA0LDRhtC40Lgg0YEgMCkg0LrQsNC6INCx0LXRgdC/0L7QutC+0Y/RidC10LPQvtGB0Y87CiAqICBRVUlFVCBpOiDQv9C+0LzQtdGC0LjRgtGMIGkt0LPQviDRh9C10LvQvtCy0LXQutCwINC60LDQuiDRg9GB0L/QvtC60L7QuNCy0YjQtdCz0L7RgdGPOwogKiAgQ09NRSBrOiDQtNC+0LHQsNCy0LjRgtGMIGsg0YHQv9C+0LrQvtC50L3Ri9GFINGH0LXQu9C+0LLQtdC6INCyINC60L7QvdC10YYg0L7Rh9C10YDQtdC00Lg7CiAqICBDT01FIC1rOiDRg9Cx0YDQsNGC0YwgayDRh9C10LvQvtCy0LXQuiDQuNC3INC60L7QvdGG0LAg0L7Rh9C10YDQtdC00Lg7CiAqICBXT1JSWV9DT1VOVDog0YPQt9C90LDRgtGMINC60L7Qu9C40YfQtdGB0YLQstC+INCx0LXRgdC/0L7QutC+0Y/RidC40YXRgdGPINC70Y7QtNC10Lkg0LIg0L7Rh9C10YDQtdC00LguCiAqICDQmNC30L3QsNGH0LDQu9GM0L3QviDQvtGH0LXRgNC10LTRjCDQv9GD0YHRgtCwLgogKiAKICog0KTQvtGA0LzQsNGCINCy0LLQvtC00LAKICogINCa0L7Qu9C40YfQtdGB0YLQstC+INC+0L/QtdGA0LDRhtC40LkgUSwg0LfQsNGC0LXQvCDQvtC/0LjRgdCw0L3QuNGPINC+0L/QtdGA0LDRhtC40LkuCiAqICDQlNC70Y8g0LrQsNC20LTQvtC5INC+0L/QtdGA0LDRhtC40LggV09SUlkgaSDQuCBRVUlFVCBpINCz0LDRgNCw0L3RgtC40YDRg9C10YLRgdGPLCDRh9GC0L4g0YfQtdC70L7QstC10Log0YEg0L3QvtC80LXRgNC+0LwgaSDRgdGD0YnQtdGB0YLQstGD0LXRgiDQsiDQvtGH0LXRgNC10LTQuCDQvdCwINC80L7QvNC10L3RgiDQvtC/0LXRgNCw0YbQuNC4LgogKiAg0JTQu9GPINC60LDQttC00L7QuSDQvtC/0LXRgNCw0YbQuNC4IENPTUUgLWsg0LPQsNGA0LDQvdGC0LjRgNGD0LXRgtGB0Y8sINGH0YLQviBrINC90LUg0LHQvtC70YzRiNC1INGC0LXQutGD0YnQtdCz0L4g0YDQsNC30LzQtdGA0LAg0L7Rh9C10YDQtdC00LguCiAqIAogKiDQpNC+0YDQvNCw0YIg0LLRi9Cy0L7QtNCwCiAqICDQlNC70Y8g0LrQsNC20LTQvtC5INC+0L/QtdGA0LDRhtC40LggV09SUllfQ09VTlQg0LLRi9Cy0LXQtNC40YLQtSDQvtC00L3QviDRhtC10LvQvtC1INGH0LjRgdC70L4g4oCUINC60L7Qu9C40YfQtdGB0YLQstC+INCx0LXRgdC/0L7QutC+0Y/RidC40YXRgdGPINC70Y7QtNC10Lkg0LIg0L7Rh9C10YDQtdC00LguCiovCgoKI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8dmVjdG9yPgogCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKaW50IG1haW4oKXsKICAgIGludCBRPTA7CiAgICBjaW4gPj4gUTsKICAgIHZlY3Rvcjxib29sPiBjcm93ZCgwLDApOwogICAgc3RyaW5nIGNvbW1hbmQ9IiJzOwogICAgdW5zaWduZWQgbnVtYmVyPTA7CiAgICBpbnQgd29ycnk9MDsKICAgIGludCBwZXJzQ29tZT0wOwogCiAgICB3aGlsZSAoIFE+MCApewogICAgICAgIGNpbj4+Y29tbWFuZDsKICAgICAgICAgIGlmKGNvbW1hbmQ9PSJXT1JSWV9DT1VOVCJzKXsKICAgICAgICAgICAgZm9yKGJvb2wgaSA6Y3Jvd2QpewogICAgICAgICAgICAgICAgaWYoaSl7CiAgICAgICAgICAgICAgICAgICAgKyt3b3JyeTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAgY291dDw8d29ycnk8PGVuZGw7CiAgICAgICAgICAgICAgd29ycnk9MDsKICAgICAgICAgIH0KICAgICAgICBpZihjb21tYW5kPT0iV09SUlkicyl7CiAgICAgICAgICAgIGNpbj4+bnVtYmVyOwogICAgICAgICAgICBpZihudW1iZXIgPCBjcm93ZC5zaXplKCkpewogICAgICAgICAgICAgICAgY3Jvd2QuYXQobnVtYmVyKT10cnVlOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmKGNvbW1hbmQ9PSJRVUlFVCJzKXsKICAgICAgICAgICAgY2luPj5udW1iZXI7CiAgICAgICAgICAgIGlmKG51bWJlcjxjcm93ZC5zaXplKCkpewogICAgICAgICAgICAgICAgY3Jvd2QuYXQobnVtYmVyKT1mYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZihjb21tYW5kPT0iQ09NRSJzKXsKICAgICAgICAgICAgY2luPj5wZXJzQ29tZTsKICAgICAgICAgICAgaW50IHNpemUgPSBjcm93ZC5zaXplKCkrcGVyc0NvbWU7CiAgICAgICAgICAgIGlmKHNpemU8PTApewogICAgICAgICAgICAgICAgY3Jvd2QuY2xlYXIoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZihzaXplPmNyb3dkLnNpemUoKSl7CiAgICAgICAgICAgICAgICBjcm93ZC5yZXNpemUoc2l6ZSxmYWxzZSk7fQogICAgICAgICAgICBlbHNle2Nyb3dkLnJlc2l6ZShzaXplKTt9CiAgICAgICAgfQogCiAgICAgICAgLS1ROwogICAgfSAgIAogCiAgICByZXR1cm4gMDsKfQ==