|
|||||||
Время создания: 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; } |
|||||||
Так же в этом разделе:
|
|||||||
![]() |
|||||||
|
|||||||
|