115 for (
Queue * queue : queues) {
117 queue->waitingTime = queue->lift->getAvailableTime(queue->waitingTime);
118 if (queue->numPeople > queue->lift->capacity) {
119 queue->numPeople -= queue->lift->capacity;
127 return (*std::min_element(queues.begin(), queues.end()))->id;
132 std::vector<std::string>
const headers = {
"Queue1",
"Queue2",
"Lift1",
"Lift2",
"Fastest"};
135 unsigned int queueLength;
136 unsigned int queue2Length;
137 unsigned int lift1WaitingTime;
138 unsigned int lift2WaitingTime;
139 unsigned int fastestQueueId;
140 } __attribute__((aligned(32)));
141 std::vector<results> rows;
149 std::vector<Queue *> queues;
161 if (!rows.empty() && rows.back().fastestQueueId == fastestQueueId &&
162 rows.back().queueLength == queueLength) {
165 results
const result = {queueLength, queue2Length, (*queues.begin())->waitingTime,
166 (*++queues.begin())->waitingTime, fastestQueueId};
167 rows.push_back(result);
170 for (
Queue * queue : queues) {
178 for (
const std::string & header : headers) {
179 std::cout << std::setw(
coutWidth) << header;
182 for (
const results & row : rows) {
183 std::cout << std::setw(
coutWidth) << row.queueLength;
184 std::cout << std::setw(
coutWidth) << row.queue2Length;
185 std::cout << std::setw(
coutWidth) << row.lift1WaitingTime;
186 std::cout << std::setw(
coutWidth) << row.lift2WaitingTime;
187 std::cout << std::setw(
coutWidth) << row.fastestQueueId;