이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "xylophone.h"
#include <bits/stdc++.h>
using namespace std;
//static int A[5000];
inline int get(int a, int b, int pa, int pb, int pc) {
int bc = query(min(pb, pc), max(pb, pc)), ac = query(min(pa, pc), max(pa, pc));
if(a < b) {
if(bc == ac) {
return b - bc;
}
if(ac == abs(a - b)) {
return b - bc;
}
return b + bc;
}
else {
if(bc == ac) {
return b + bc;
}
if(ac == abs(a - b)) {
return b + bc;
}
return b - bc;
}
}
void solve(int n) {
if(n == 1) {
answer(1, 1);
return ;
}
int i;
vector <int> sol(n + 1);
sol[1] = 0;
sol[2] = query(1, 2);
for(i = 3; i <= n; i++) {
sol[i] = get(sol[i - 2], sol[i - 1], i - 2, i - 1, i);
}
int mn = 2 * n + 1;
for(i = 1; i <= n; i++) {
mn = min(mn, sol[i]);
}
for(i = 1; i <= n; i++) {
sol[i] -= mn - 1;
}
int a = 0, b = 0;
for(i = 1; i <= n; i++) {
if(sol[i] == 1) {
a = i;
}
if(sol[i] == n) {
b = i;
}
}
if(a > b) {
for(i = 1; i <= n; i++) {
sol[i] = n - sol[i] + 1;
}
}
for(i = 1; i <= n; i++) {
answer(i, sol[i]);
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |