답안 #28496

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
28496 2017-07-16T06:42:57 Z 三( ε:)(#1146, xdoju, veckal, unused) LR Springboard (FXCUP2_springboard) C++11
0 / 1
0 ms 1132 KB
#include "springboard.h"

void Reorder(int N) {
  // �ϴ� ����� ��� ����.
  int m = (1 + N) / 2;
  int r = PutBall(m);

  int rs = 0, re = 0;

  if(r == -1){ // �������� ����. [1, m] �� R Ȯ��. [m + 1, N] �� ��.
    r = PutBall(m);
    // RRRRLLLL : -1, RRRRRRRR
    // RRRRLLLR : LLLLLLLL
    // RRRRLLRR : RLLLLLLL
    // RRRRRLLLL : LLLLLLLLL
    // RRRRRLLLR : RLLLLLLLL
    // RRRRRLLRR : RRLLLLLLL

    if(r == -1){ // ���� �� R
      PutBall(1); return ;
    }

    rs = 0; re = m - 1;
  }
  else{ // ���������� ����. [m, N] �� L Ȯ��. [1, m - 1] �� ��.
    r = PutBall(m); // �׻� -1
    // RRRLLLLL : RRRRRRRL
    // LRRLLLLL : RRRRRRLL
    // LLRLLLLL : RRRRRLLL
    // RRRRLLLLL : RRRRRRRRR
    // LRRRLLLLL : RRRRRRRRL
    // LLRRLLLLL : RRRRRRRLL
    // LLLLLLLLL : RRRRRLLLL

    rs = m;
    re = N - N % 2;
  }

  // ���� ���� ���� R ������ �ٿ��� �Ѵ�.
  // x�� ������ (R + x) % (N + 1) ���� R�� ����.

  for(;;){
    // [rs, re]
    // [rs, rm] [rm + 1, re]
    if(rs == re){
      // ������ Ȯ����
      PutBall(N - rs + 1); return ;
    }
    if(re == rs + 1){
      r = PutBall(N - rs);
      // ���� R�� �ǰ� -1 �� �߰ų�, ���� L�� �ǰ� 1�� ��
      if(r == 1) return ;
      if(r == -1){ PutBall(1); return ; }
    }

    int rm = (rs + re) / 2;

    // rm������ -1, rm + 1������ 1�� �ǵ��� ����
    r = PutBall(N - rm);

    if(r == -1){ rs += N - rm; re = N; }
    else{ rs = 0; re = (re + N - rm) % (N + 1); }
  }
}
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 1132 KB Output is correct
2 Correct 0 ms 1132 KB Output is correct
3 Correct 0 ms 1132 KB Output is correct
4 Correct 0 ms 1132 KB Output is correct
5 Correct 0 ms 1132 KB Output is correct
6 Incorrect 0 ms 1132 KB Output isn't correct
7 Halted 0 ms 0 KB -