Условие :
Первая строка входа содержит размер буфера size и
число пакетов n. Каждая из следующих n строк содержит два
числа: время arrivali прибытия i-го пакета и время durationi
,
необходимое на его обработку. Гарантируется, что arrival1 ≤
arrival2 ≤ · · · ≤ arrivaln. При этом может оказаться, что
arrivali−1 = arrivali
. В таком случае считаем, что пакет i − 1 поступил раньше пакета i.
Формат выхода. Для каждого из n пакетов выведите время, когда
процессор начал его обрабатывать, или −1, если пакет был отброшен.
Ограничения. Все числа во входе целые. 1 ≤ size ≤ 105
; 0 ≤ n ≤ 105
;
0 ≤ arrivali ≤ 106
; 0 ≤ durationi ≤ 103
; arrivali ≤ arrivali+1 для всех
1 ≤ i ≤ n − 1.
Пример.
Вход:
1 0
Выход:
Если пакетов нет, выводить ничего не нужно.
Пример.
Вход:
1 1
0 0
Выход:
0
Пакет поступил в момент времени 0, и компьютер тут же начал
его обрабатывать. Но при выводе у меня получается вход 1 0 и выход пустое значение (Empty result) в Visual studio проверял код всё нормально а вот в стёпике ругается может скажите как дополнить код чтоб решить данную ошибку
#include <iostream>
#include <queue>
using namespace std;
int main() {
int bufferSize, numPackets;
cin >> bufferSize >> numPackets;
queue<pair<int, int>> packets; // очередь пакетов
int currentTime = 0; // текущее время
for (int i = 0; i < numPackets; i++) {
int arrival, duration;
cin >> arrival >> duration;
// Извлекаем из очереди пакеты, которые готовы к обработке
while (!packets.empty() && packets.front().first <= currentTime - bufferSize) {
cout << packets.front().second << endl;
packets.pop();
}
if (packets.size() < bufferSize) {
// Очередь не полна, добавляем пакет
int startTime = max(currentTime, arrival); // время начала обработки пакета
cout << startTime << endl;
packets.push({startTime + duration, startTime});
} else {
// Очередь полна, пакет не может быть обработан
cout << -1 << endl;
}
currentTime = arrival + duration; // обновляем текущее время
}
return 0;
}