This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "xylophone.h"
#include <bits/stdc++.h>
using namespace std;
static int A[5000];
int arr[105][105];
void solve(int n) {
int k=1000,a=0,b=0;
for(int i=1;i<=n;i++){
for(int j=i+1;j<=n;j++){
arr[i][j]=query(i,j);
if(arr[i][j]==n-1){
if(k>j-i){
k=j-i;
a=i;
b=j;
}
}
}
}
A[a]=1;
A[b]=n;
map<int,bool>mp;
mp[1]=true;
mp[n]=true;
for(int i=a;i>1;i--){
int l=A[i]+arr[i-1][i];
int r=A[i]-arr[i-1][i];
if(1<l&&l<n&&!mp[l]){
A[i-1]=l;
mp[l]=true;
}
else{
A[i-1]=r;
mp[r]=true;
}
}
for(int i=a;i<b-1;i++){
int l=A[i]+arr[i][i+1];
int r=A[i]-arr[i][i+1];
if(1<l&&l<n&&!mp[l]){
A[i+1]=l;
mp[l]=true;
}
else{
A[i+1]=r;
mp[r]=true;
}
}
for(int i=b;i<n;i++){
int l=A[i]+arr[i][i+1];
int r=A[i]-arr[i][i+1];
if(1<l&&l<n&&!mp[l]){
A[i+1]=l;
mp[l]=true;
}
else{
A[i+1]=r;
mp[r]=true;
}
}
for(int i=1;i<=n;i++){
answer(i,A[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... |