# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
28496 | 三( ε:) (#68) | LR Springboard (FXCUP2_springboard) | C++11 | 0 ms | 1132 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#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); }
}
}
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |