#include <queue>

#include <vector>

#include <map>

using namespace std;

priority_queue< int, vector<int>, greater<int> > pq1, pq2, pq3;

map<int, bool> lefts;

int solution(vector<int> a) {

for(int i=0 ; i<a.size() ; i++) pq2.push(a[i]);

for(int i=0 ; i<a.size() ; i++){

pq1.push(a[i]);

pq3.push(a[i]);

int fisrt=pq1.top(), second=pq2.top();

lefts[max(fisrt, second)]=true;

while(true){

if(pq3.size()&&pq2.size()&&pq3.top()==pq2.top())

pq3.pop(), pq2.pop();

else break;

}

}

return lefts.size();

}


해설: 우선순위 큐를 3개를 쓰면 됨

그럼 20000