| # | Time | Username | Problem | Language | Result | Execution time | Memory | 
|---|---|---|---|---|---|---|---|
| 28505 | 三( ε:) (#68) | LR Springboard (FXCUP2_springboard) | C++11 | 3 ms | 1132 KiB | 
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#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 | 
|---|---|---|---|---|
| Fetching results... | ||||
