만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

분수 비교

시간 제한3초메모리 제한1024 MB

요약
덧셈, 뺄셈, 비교 연산만으로 분수 A/B와 C/D의 크기를 비교하는 대화형 문제입니다.
난이도

보통10점 중 7점

유형
수학, 비트 연산, 구현
정답자
아직 제출이 없습니다

문제

이 문제는 대화형(interactive) 문제입니다. 아래 상호작용 절을 참고하세요.

오늘은 CS999의 첫 수업이었습니다.

먼저 4×10184 \times 10^{18} 이하의 음이 아닌 정수를 배웠습니다. 또한 두 정수의 덧셈, 뺄셈, 비교를 배웠습니다.

과제는 분수 AB\frac{A}{B}와 CD\frac{C}{D}를 비교하는 것입니다. 교수님은 수업 자료만으로 과제를 풀 수 있다고 하셨습니다.

다음 연산만 사용할 수 있습니다.

  • 덧셈: 두 정수 aa, bb에 대해 a+ba+b를 계산할 수 있습니다. 결과는 4×10184 \times 10^{18} 이하여야 합니다.
  • 뺄셈: 두 정수 aa, bb에 대해 a−ba-b를 계산할 수 있습니다. 결과는 0 이상이어야 합니다.
  • 비교: 두 정수 aa, bb에 대해 값이 같은지, 어느 쪽이 큰지 알 수 있습니다.

이 연산들을 사용해 두 분수를 비교하세요.

제한

1≤A,B,C,D≤1091 \leq A, B, C, D \leq 10^9

힌트

AA, BB, CC, DD는 직접 얻을 수 없습니다. 대신 길이가 10610^6인 숨겨진 배열 X1,X2,⋯ ,X106X_1, X_2, \cdots, X_{10^6}에 연산을 적용합니다.

처음에 X1=AX_1=A, X2=BX_2=B, X3=CX_3=C, X4=DX_4=D이고, i>4i>4인 XiX_i는 모두 0입니다.

다음 명령을 사용합니다.

  • 두 원소를 더하려면 + i j k를 출력합니다 (1≤i,j,k≤1061 \le i, j, k \le 10^6). 그러면 XiX_i가 Xj+XkX_j+X_k가 됩니다. Xj+XkX_j+X_k는 4×10184 \times 10^{18} 이하여야 하며, 그렇지 않으면 Wrong Answer 판정을 받습니다. 입력으로는 아무것도 주어지지 않습니다.
  • 두 원소를 빼려면 - i j k를 출력합니다 (1≤i,j,k≤1061 \le i, j, k \le 10^6). 그러면 XiX_i가 Xj−XkX_j-X_k가 됩니다. Xj≥XkX_j \ge X_k여야 하며, 그렇지 않으면 Wrong Answer 판정을 받습니다. 입력으로는 아무것도 주어지지 않습니다.
  • 두 원소를 비교하려면 < i j를 출력합니다 (1≤i,j≤1061 \le i, j \le 10^6). 입력으로 정수 하나가 주어집니다. Xi<XjX_i<X_j이면 -1, Xi=XjX_i=X_j이면 0, Xi>XjX_i>X_j이면 1이 주어집니다.

AB\frac{A}{B}와 CD\frac{C}{D}를 비교한 뒤에는 다음과 같이 출력합니다.

  • AB<CD\frac{A}{B} < \frac{C}{D}이면 ! -1
  • AB=CD\frac{A}{B} = \frac{C}{D}이면 ! 0
  • AB>CD\frac{A}{B} > \frac{C}{D}이면 ! 1

명령을 200,001개보다 많이 사용하거나 잘못된 질의를 하면 interactor가 즉시 종료되고 Wrong Answer 판정을 받습니다.

채점

비교 결과가 틀리면 점수는 0입니다. 그렇지 않으면 다음 세 가지 값으로 점수가 정해집니다.

  • imaxi_{max}: 연산에 사용한 배열 XX의 최대 인덱스
  • nopn_{op}: 수행한 연산 횟수 (답을 출력하는 명령은 세지 않습니다)
  • XmaxX_{max}: 연산 중 배열 XX에 있던 최댓값

예제2

  1. 예제 1

    입력
    -1
    
    예상 출력
    + 5 3 1
    - 1 2 1
    < 1 5
    ! 0
    
  2. 예제 2

    입력
    1
    -1
    0
    
    예상 출력
    < 1 2
    < 4 3
    < 2 2
    ! -1