# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
641885 | ivaziva | Xylophone (JOI18_xylophone) | C++14 | 0 ms | 0 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "xylophone.h"
#include <bits/stdc++.h>
using namespace std;
#define MAXN 5010
long long a[MAXN],d1[MAXN],d2[MAXN],e[MAXN];
void solve(long long n)
{
for (long long i=0;i<n-1;i++) d1[i]=query(i+1,i+2);
for (long long i=0;i<n-2;i++) d2[i]=query(i+1,i+3);
e[0]=d1[0];
for (long long i=1;i<n-1;i++)
{
e[i]=d1[i];
if (e[i-1]<0)
{
e[i]=-e[i];
}
if (d1[i-1]+d1[i]!=d2[i-1])
{
e[i]=-e[i];
}
}
long long mn=0,mni=0,cur=0;
for (long long i=1;i<n;i++)
{
cur+=e[i-1];
if (cur<e[i-1])
{
mni=i;
mn=cur;
}
}
cur=0;
for (long long i=mni;i<n;i++)
{
a[i]=cur;
cur+=e[i-1];
}
cur=0;
for (long long i=mni;i>=0;i--)
{
cur-=e[i];
a[i]=cur;
}
long long pos=0;
while (a[pos]!=n-1) pos++;
if (mni>pos)
{
for (long long i=0;i<n;i++) a[i]=n-1-a[i];
}
for (long long i=0;i<n;i++) answer(i+1,a[i]+1);
}