Logo
(追記) (追記ここまで)

30039번 - Queueueue

시간 제한메모리 제한제출정답맞힌 사람정답 비율
2.5 초 1024 MB5101379227.139%

문제

지금까지 세상에 존재하지 않았던 새로운 자료구조 Queueueue를 소개한다. 자료구조 Queueueue는 가로 Queue와 세로 Queue로 구성되어 있으며, 두 Queue가 십자가로 겹친 형태이다. 즉, 원소 1개에 대해서 중간 지점을 공유하고 있다. Queueueue의 정확한 정의는 다음과 같다.

  • 가로 Queue의 원소 개수를 $n_h,ドル 세로 Queue의 원소 개수를 $n_v$로 정의한다.
  • 가로 Queue의 $\left\lceil \frac{n_h}{2} \right\rceil$번째 원소와 세로 Queue의 $\left\lceil \frac{n_v}{2} \right\rceil$번째 원소는 서로 공유하는 같은 원소이다. 이 원소를 공유 원소라고 정의한다.
  • Queueueue는 명령을 수행하고 나서 매번 공유 원소를 새로 갱신한다.
  • 비어있는 Queueueue에는 공유 원소가 없다. 비어있는 Queueueue에 원소를 넣으면 그 원소가 공유 원소가 되며 $n_h = 1,ドル $n_v = 1$이다.
    • $n_h = 0,ドル $n_v = 0$인 경우를 제외하고 $n_h \times n_v = 0$인 경우는 없다. 따라서 Queueueue가 비어있지 않다면 항상 $n_h \ge 1,ドル $n_v \ge 1$이다.

처음에 Queueueue는 비어있으며 Queueueue는 다음 13가지 명령을 할 수 있다.

  • hpush x : 가로 Queue의 맨 뒤에 정수 $x$를 넣는다. $(1 \le x \le 100,000円)$
  • hpop : 가로 Queue에 정수가 있다면 맨 앞에 있는 정수를 빼고 출력한다. 없다면 -1을 대신 출력한다.
  • hfront : 가로 Queue에 정수가 있다면 맨 앞에 있는 정수를 출력한다. 없다면 -1을 대신 출력한다.
  • hback : 가로 Queue에 정수가 있다면 맨 뒤에 있는 정수를 출력한다. 없다면 -1을 대신 출력한다.
  • hsize : 가로 Queue에 들어있는 정수의 개수를 출력한다.
  • vpush x : 세로 Queue의 맨 뒤에 정수 $x$를 넣는다. $(1 \le x \le 100,000円)$
  • vpop : 세로 Queue에 정수가 있다면 맨 앞에 있는 정수를 빼고 출력한다. 없다면 -1을 대신 출력한다.
  • vfront : 세로 Queue에 정수가 있다면 맨 앞에 있는 정수를 출력한다. 없다면 -1을 대신 출력한다.
  • vback : 세로 Queue에 정수가 있다면 맨 뒤에 있는 정수를 출력한다. 없다면 -1을 대신 출력한다.
  • vsize : 세로 Queue에 들어있는 정수의 개수를 출력한다.
  • size : Queueueue에 들어있는 정수의 개수를 출력한다.
  • empty : Queueueue가 비어있으면 1, 아니면 0을 출력한다.
  • middle : Queueueue에 정수가 있다면 Queueueue공유 원소에 해당하는 정수를 출력한다. 없다면 -1을 대신 출력한다.

입력

첫 번째 줄에 명령의 수 $N$이 주어진다. $(1 \le N \le 2,000円,000円)$

두 번째 줄부터 $N$개의 줄에 걸쳐 명령이 하나씩 주어진다.

출력

출력을 요구하는 명령이 주어질 때마다, 명령의 결과를 한 줄에 하나씩 출력한다.

제한

예제 입력 1

33
empty
hpush 2
vpush 3
vfront
empty
hpush 4
hfront
vpush 1
hpush 5
middle
vback
hback
vpush 6
middle
hsize
vpop
vfront
hpop
vsize
hpop
size
hpop
hpop
vpop
vpop
size
vfront
hfront
vback
hback
hpop
size
empty

예제 출력 1

1
2
0
2
4
1
5
4
3
2
4
3
3
1
3
5
4
6
-1
0
-1
-1
-1
-1
-1
0
1

예제 입력 2

33
hpush 1
vpush 2
vpush 3
vpop
vpop
vpop
vpush 1
vpush 2
hpush 3
vpop
vpop
hpush 4
hpush 5
vpush 6
vpush 7
hpop
vpop
hpop
vpop
hpop
vpush 1
vpush 2
vpush 3
vpush 4
vpop
hpush 5
hpush 6
hpop
vpop
hpop
vpop
hpop
hpop

예제 출력 2

1
2
3
1
2
3
4
6
5
7
1
3
2
5
6
4
-1

예제 입력 3

33
middle
hpush 1
middle
vpush 2
middle
hpush 3
middle
vpush 4
middle
hpush 5
middle
vpush 6
middle
hpush 7
middle
vpush 8
middle
hpush 9
middle
vpush 10
middle
hpop
middle
hpop
middle
hpop
middle
hpop
middle
hpop
middle
hpop
middle

예제 출력 3

-1
1
1
1
2
3
3
3
4
5
5
2
5
4
7
5
7
7
9
9
6
6
3

힌트

출처

Contest > BOJ User Contest > 유틸컵 > 제1회 유틸컵 - Chapter 2 Q번

(追記) (追記ここまで)

출처

대학교 대회

  • 사업자 등록 번호: 541-88-00682
  • 대표자명: 최백준
  • 주소: 서울시 서초구 서초대로74길 29 서초파라곤 412호
  • 전화번호: 02-521-0487 (이메일로 연락 주세요)
  • 이메일: contacts@startlink.io
  • 통신판매신고번호: 제 2017-서울서초-2193 호

AltStyle によって変換されたページ (->オリジナル) /