Здравствуйте. Решая задачу, столкнулся c тем, что вместо чисел 1 и 2 программа выводит какой-то мусор. В чём может быть проблема?
ЗадачаЛюди стоят в очереди, но никогда не уходят из её начала, зато могут приходить в конец и уходить оттуда. Более того, иногда некоторые люди могут прекращать и начинать беспокоиться из-за того, что очередь не продвигается.
Реализуйте обработку следующих операций над очередью:
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>
void change_status(int i, std::vector<bool>& people) {
if (i > people.size()) {
people.resize(i + 1);
}
if (i > 0) {
people[i] = true;
}
}
void come(int k, std::vector<bool>& people) {
people.resize(people.size() + k + 1);
}
void worry_count(const std::vector<std::string>& commands, const std::vector<int>& values, std::vector<bool>& people) {
int counter;
for (bool person : people) {
if (person) {
++counter;
}
}
std::cout << counter << std::endl;
}
int main(void) {
std::vector<std::string> commands = {"COME", "WORRY", "WORRY", "COME", "WORRY_COUNT", "COME", "WORRY", "WORRY_COUNT"};
std::vector<int> values = {5, 1, 4, -2, 0, 3, 3, 0};
std::vector<bool> people; // true - беспокоящийся человек, false - спокойный
int i = 0;
for (std::string command : commands) {
if (command == "WORRY" || command == "QUIET") {
change_status(i, people);
} else if (command == "COME") {
come(i, people);
} else {
worry_count(commands, values, people);
}
++i;
}
return 0;
}