문제
현수는 유명한 강연자이다. N개이 기업에서 강연 요청을 해왔다. 각 기업은 D일 안에 와서 강 연을 해 주면 M만큼의 강연료를 주기로 했다.
각 기업이 요청한 D와 M를 바탕으로 가장 많을 돈을 벌 수 있도록 강연 스케쥴을 짜야 한다.
단 강연의 특성상 현수는 하루에 하나의 기업에서만 강연을 할 수 있다.
입력설명
첫 번째 줄에 자연수 N(1<=N<=10,000)이 주어지고, 다음 N개의 줄에 M(1<=M<=10,000)과 D(1<=D<=10,000)가 차례로 주어진다.
출력설명
첫 번째 줄에 최대로 벌 수 있는 수입을 출력한다.
입력예제
6
50 2
20 1
40 2
60 3
30 3
30 1
출력예제
150
#include <stdio.h>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std;
struct Data{
int money;
int when;
Data(int a, int b){
money = a;
when = b;
}
bool operator<(Data &b){
return when>b.when;
}
};
int main(){
freopen("input.txt", "rt", stdin);
int n, i, j, a, b, result=0, max=-2147000000;
vector<Data> T;
priority_queue<int> pQ;
scanf("%d", &n);
for(i=1; i<=n; i++){
scanf("%d %d", &a, &b);
T.push_back(Data(a, b));
if(b>max){
max = b;
}
}
sort(T.begin(), T.end());
j=0;
for(i=max; i>=1; i--){
for( ; j<n; j++){
if(T[j].when < i){
break;
}
pQ.push(T[j].money);
}
if(!pQ.empty()){
result += pQ.top();
pQ.pop();
}
}
printf("%d\n", result);
return 0;
}
'알고리즘 > it 취업을 위한 알고리즘 문제풀이' 카테고리의 다른 글
77. 친구인가?(Union&Find 자료구조) (0) | 2021.06.09 |
---|---|
76. 이항계수(메모이제이션) (0) | 2021.06.08 |
74. 최소 힙(priority_queue) (0) | 2021.06.07 |
73. 최대 힙(priority_queue) (0) | 2021.06.07 |
72. 공주 구하기(큐) (0) | 2021.06.07 |