題解:CF644B Processing Queries

KukCair發表於2024-11-23

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;
}

相關文章