문제
개발자 취업앱을 만들려고 한다.
개발자마다 id와 희망 연봉, C++ 역량, Java 역량, Python 역량이 주어진다.
id는 고유하다.
아래 명령들을 수행하는 프로그램을 작성하자.
1. register pid salary C J P
아이디가 pid인 개발자가 앱에 등록된다.
salary, C, J, P 는 각각 희망 연봉, C++역량, Java역량, Python역량이다.
pid : int범위의 양의 정수
salary : int범위의 양의 정수
0 <= C, J, P <= 10,000
2. cancel pid
아이디가 pid인 개발자가 앱에서 등록을 취소한다.
존재하지 않는 개발자면 무시한다.
3. update pid flag X
아이디가 pid인 개발자의 역량이 변경된다.
- flag=0, C++ 역량이 X로 바뀐다.
- flag=1, JAVA 역량이 X로 바뀐다.
- flag=2, Python 역량이 X로 바뀐다.
존재하지 않는 개발자면 무시한다.
4. hire_min
희망 연봉이 가장 적은 개발자 한 명을 영입한다.
그러한 개발자가 여러 명이라면 pid가 가장 작은 개발자를 영입한다.
해당 개발자 pid를 출력하고 앱에서 등록 해제한다.
한 명 이상의 개발자가 앱에 등록되어 있음을 보장한다.
5. hire_max
3개의 평균 역량이 가장 높은 3명을 영입한다.
평균 역량이 동일한 경우는 pid가 큰 개발자가 우선순위가 높다.
영입한 3명의 개발자 pid를 우선순위가 높은 순서대로 출력하고 앱에서 등록 해제한다.
세 명 이상의 개발자가 앱에 등록되어 있음을 보장한다.
입력
첫째 줄에 명령 수 Q가 입력된다.
둘째 줄부터 Q개 줄에 걸쳐 본문에 주어진 형식에 맞게 명령이 주어진다.
Q<=10,000
출력
hire_min, hire_max 두 개 명령에서 영입한 개발자 pid를 한 줄씩 출력한다.
hire_max의 경우 3명의 pid값을 한 칸 띄고 출력한다.
예제
12
register 1 10 1 1 1
register 2 100 2 3 4
register 3 1 5 5 10
register 4 200 0 0 0
register 5 5 10 10 20
hire_min
update 2 0 30
hire_min
register 6 20 1 3 5
register 7 20 10 10 10
cancel 6
hire_max
3
5
2 7 1