Submission #28505

# Submission time Handle Problem Language Result Execution time Memory
28505 2017-07-16T06:47:32 Z 三( ε:)(#1146, xdoju, veckal, unused) LR Springboard (FXCUP2_springboard) C++11
1 / 1
3 ms 1132 KB
#include "springboard.h"
// #include <cstdio>

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 + 1) % 2;
  }

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

  for(;;){
    // printf("rs : %d, re : %d\n", rs, re);

    // [rs, re]
    // [rs, rm] [rm + 1, re]
    if(rs == re){
      // ������ Ȯ����
      if(rs != 0) 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); }
  }
}
# Verdict Execution time Memory Grader output
1 Correct 3 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 Correct 0 ms 1132 KB Output is correct
7 Correct 0 ms 1132 KB Output is correct
8 Correct 0 ms 1132 KB Output is correct
9 Correct 0 ms 1132 KB Output is correct
10 Correct 0 ms 1132 KB Output is correct
11 Correct 0 ms 1132 KB Output is correct
12 Correct 0 ms 1132 KB Output is correct
13 Correct 0 ms 1132 KB Output is correct
14 Correct 0 ms 1132 KB Output is correct
15 Correct 0 ms 1132 KB Output is correct
16 Correct 0 ms 1132 KB Output is correct
17 Correct 0 ms 1132 KB Output is correct
18 Correct 3 ms 1132 KB Output is correct
19 Correct 0 ms 1132 KB Output is correct
20 Correct 3 ms 1132 KB Output is correct
21 Correct 0 ms 1132 KB Output is correct
22 Correct 0 ms 1132 KB Output is correct
23 Correct 0 ms 1132 KB Output is correct
24 Correct 0 ms 1132 KB Output is correct
25 Correct 0 ms 1132 KB Output is correct
26 Correct 0 ms 1132 KB Output is correct
27 Correct 0 ms 1132 KB Output is correct
28 Correct 0 ms 1132 KB Output is correct
29 Correct 0 ms 1132 KB Output is correct
30 Correct 0 ms 1132 KB Output is correct
31 Correct 0 ms 1132 KB Output is correct
32 Correct 0 ms 1132 KB Output is correct
33 Correct 0 ms 1132 KB Output is correct
34 Correct 0 ms 1132 KB Output is correct
35 Correct 0 ms 1132 KB Output is correct
36 Correct 0 ms 1132 KB Output is correct
37 Correct 0 ms 1132 KB Output is correct
38 Correct 0 ms 1132 KB Output is correct
39 Correct 0 ms 1132 KB Output is correct
40 Correct 0 ms 1132 KB Output is correct
41 Correct 0 ms 1132 KB Output is correct