MyTetra Share
Делитесь знаниями!
Очередь
Время создания: 24.07.2017 23:53
Раздел: Computer - Programming - C++ - Coursera White_Belt

/*

Люди стоят в очереди, но никогда не уходят из её начала,

зато могут приходить в конец и уходить оттуда.

Более того, иногда некоторые люди могут начинать

и прекращать беспокоиться из-за того,

что очередь не продвигается.


Реализуйте обработку следующих операций над очередью:


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 <vector>

#include <string>


using namespace std;


int main()

{

int q;

cin >> q;


vector<char> queue;

string cmd;

int k = 0;


while(q)

{

cin >> cmd;

if(cmd == "WORRY_COUNT")

{

/*int count = 0;

for(auto i : queue)

{

if(i == 'w')

++count;

}

cout << count << "\n";*/

//второй вариант через count:

cout << count(begin(queue), end(queue), 'w') << endl;

}

else

{

cin >> k;

if(cmd == "COME")

{

// метод resize может как уменьшать размер вектора, так и увеличивать,

// поэтому специально рассматривать случаи с положительным

// и отрицательным person_count не нужно

queue.resize(queue.size()+k, 'q');

}

else if(cmd == "WORRY")

{

queue[k] = 'w';

}

else if(cmd == "QUIET")

{

queue[k] = 'q';

}

}

--q;

}


system("pause");

return 0;

}

Так же в этом разделе:
 
MyTetra Share v.0.53
Яндекс индекс цитирования