| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 1282574 | Jawad_Akbar_JJ | Xylophone (JOI18_xylophone) | C++20 | 0 ms | 0 KiB |
#include <iostream>
#include "xylophone.h"
using namespace std;
int a[1<<16];
void solve(int n){
a[1] = n + n;
int Min = 1, cur = 1;
while (cur < n){
int d = query(cur, cur + 1), dd;
if (Min == 1)
a[cur + 1] = a[cur] + d;
else
a[cur + 1] = a[cur] - d;
if (cur == n - 1)
break;
dd = query(cur, cur + 2);
Min = Min ^ (dd == d);
cur++;
}
int Mn = a[1] - 1, id1, idn;
for (int i=1;i<=n;i++)
Mn = min(Mn, a[i] - 1);
for (int i=1;i<=n;i++){
a[i] -= Mn;
if (a[i] == 1)
id1 = i;
if (a[i] == n)
id2 = i;
}
for (int i=1;i<=n;i++)
answer(i, a[i] + (n + 1 - 2 * a[i]) * (id1 > id2));
}
