CF644B Processing Queries
基本思路
模擬題。
對於每個工作申請,佇列有如下兩種操作:
首先,將 \(\leq\) 當前開始時間(即 \(t_i\))的所有操作彈出。
接下來有兩種選擇:
-
當佇列已滿,直接輸出
-1
。 -
當佇列未滿,更新結束時間併入隊,輸出新結束時間。
程式碼實現
#include <bits/stdc++.h>
#define int long long
using namespace std;
int n, b, nw;
queue<int> q;
signed main(){
cin >> n >> b;
while(n--){
int t, d;
cin >> t >> d;
while(!q.empty() && q.front() <= t) q.pop();
if(q.size() > b) cout << "-1 ";
else{
nw = max(nw, t) + d;
q.push(nw);
cout << nw << ' ';
}
}
return 0;
}