페이지가 로드되지 않나요? 여기를 눌러보면 고쳐질 수도 있어요.
Placeholder

#4946

개발자 영입 1s 256MB

문제

개발자 취업앱을 만들려고 한다.

개발자마다 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

출처

teriusu

로그인해야 코드를 작성할 수 있어요.