Algorithm/etc
priority queue와 struct vector을 이용한 정렬
DingCoDing
2022. 1. 17. 16:55
반응형
Data라는 구조체를 만들고,
구조체를 자료형으로 갖는 벡터를 만들어서
priority queue를 문제 풀이에 이용했다.
#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <stack>
#include <vector>
#include <math.h>
#include <queue>
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.txt","rt",stdin);
int n,i,j,a,b,res=0, maxx=INT_MIN;
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>maxx) maxx=b;
}
sort(T.begin(), T.end());
j=0;
for(i=maxx; i>=1; i--){
for(;j<n; j++){
if(T[j].when<i) break;
pQ.push(T[j].money);
}
if(!pQ.empty()){
res+=pQ.top();
pQ.pop();
}
}
printf("%d\n",res);
return 0;
}
반응형