이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
#include "xylophone.h"
void solve(int n){
bool have[n+1]={0};
int ans[n]={0};
int mnind=n;
int l=1; int r=n;
int mn=1; int mx=n;
while(l<r){
if(r-l==1){
int q1=query(l, n);
int q2=query(r, n);
if(q1>q2){
mnind=l;
have[1]=1;
ans[l]=1;
}
else{
mnind=r;
have[1]=1;
ans[r]=1;
}
break;
}
int s=(l+r)/2;
int q1=query(s+1, r);
if(q1!=mx-mn){
mx=query(l, s)+1;
r=s;
}
else{
l=s+1;
}
}
if(mnind!=n){
int q=query(mnind, mnind+1);
have[q+1]=1;
ans[mnind+1]=q+1;
}
if(mnind!=1){
int q=query(mnind-1, mnind);
have[q+1]=1;
ans[mnind-1]=q+1;
}
for(int i=mnind+2; i<=n; i++){
int q1=query(i-1, i);
if(q1+ans[i-1]>n || have[q1+ans[i-1]]){
have[ans[i-1]-q1]=1;
ans[i]=ans[i-1]-q1;
}
else if(ans[i-1]-q1<1 || have[ans[i-1]-q1]){
have[ans[i-1]+q1]=1;
ans[i]=ans[i-1]+q1;
}
else{
int q2=query(i-2, i);
if(q2==abs(ans[i-1]-ans[i-2])){
ans[i]=ans[i-1]-q1;
have[ans[i]]=1;
}
else{
if(ans[i-1]>ans[i-2]){
if(q1==q2){
ans[i]=ans[i-1]-q1;
have[ans[i]]=1;
}
else{
ans[i]=q1+ans[i-1];
have[ans[i]]=1;
}
}
else{
if(q1==q2){
ans[i]=q1+ans[i-1];
have[ans[i]]=1;
}
else{
ans[i]=ans[i-1]-q1;
have[ans[i]]=1;
}
}
}
}
}
for(int i=mnind-2; i>=1; i--){
int q1=query(i, i+1);
if(q1+ans[i+1]>n || have[ans[i+1]]-q1){
have[ans[i+1]-q1]=1;
ans[i]=ans[i-1]+q1;
}
else if(ans[i+1]-q1 < 1 || have[ans[i+1-q1]]){
have[ans[i+1]+q1]=1;
ans[i]=ans[i+1]+q1;
}
else{
int q2=query(i, i+2);
if(q2==abs(ans[i+2]-ans[i-1])){
ans[i]=ans[i+1]-q1;
have[ans[i]]=1;
}
else{
if(ans[i+1]>ans[i+2]){
if(q1==q2){
ans[i]=ans[i+1]-q1;
have[ans[i]]=1;
}
else{
ans[i]=ans[i+1]+q1;
have[ans[i]]=1;
}
}
else{
if(q1==q2){
ans[i]=q1+ans[i+1];
have[ans[i]]=1;
}
else{
ans[i]=ans[i+1]-q1;
have[ans[i]]=1;
}
}
}
}
}
for(int i=1; i<=n; i++){
answer(i, ans[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... |