-
[BOJ]백준 22234번: 가희와 은행(C++)/Priority QueueProblem Solving/BOJ(백준) 2021. 8. 15. 21:39
https://www.acmicpc.net/problem/22234
운영체제 CPU 스케줄링 알고리즘인 라운드-로빈을 구현하는 문제
현재 점유중인 손님의 time quantum이 종료됨과 동시에 손님이 들어왔을 때 처리가 잘못 된 것인지 .. 계속 틀렸다 ㅠ
1주 4문제 실천중인데.. 1일 1문제 풀어야 하나 ❓❓ ㅎㅎ
코딩하기 정말 힘들다 ~~
#include <cstdio> #include <queue> #include <algorithm> using namespace std; typedef struct { int p, t; }customer; typedef struct { int p, t, c; }waiting; typedef struct { bool operator()(waiting a, waiting b) { return a.c > b.c; } }cmp; int N, T, W, M; queue<customer> c; priority_queue<waiting, vector<waiting>, cmp> w; int main() { scanf("%d%d%d", &N, &T, &W); for (int i = 0, p, t; i < N; i++) { scanf("%d%d", &p, &t); c.push({ p,t }); } scanf("%d", &M); for (int i = 0, p, t, c; i < M; i++) { scanf("%d%d%d", &p, &t, &c); w.push({ p,t,c }); } int time = 0; while (time < W) { auto cur = c.front(); c.pop(); for (int t = 0; t < min(cur.t, T); t++) { if (time >= W)break; printf("%d\n", cur.p); time++; } if (time >= W)break; while (!w.empty() && w.top().c <= time) { c.push({ w.top().p,w.top().t }); w.pop(); } if (cur.t > T) { c.push({ cur.p,cur.t - T }); } } return 0; }
'Problem Solving > BOJ(백준)' 카테고리의 다른 글
[BOJ]4358번: 생태학(C++) (419) 2021.08.20 [BOJ]백준 2917번: 늑대 사냥꾼(C++)/Dijkstra (349) 2021.08.16 [BOJ]백준 22116번: 창영이와 퇴근(C++)/Binary Search, DFS (1) 2021.08.15 [BOJ]백준 1495번: 기타리스트(C++)/DP (175) 2021.08.15 [BOJ]백준 20160번: 야쿠르트 아줌마 야쿠르트 주세요(C++)/Dijkstra (0) 2021.08.09