Submission #28505

#TimeUsernameProblemLanguageResultExecution timeMemory
28505三( ε:) (#68)LR Springboard (FXCUP2_springboard)C++11
1 / 1
3 ms1132 KiB
#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 timeMemoryGrader output
Fetching results...