이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
#include "xylophone.h"
using namespace std;
// static int a[5000];
int a[5004];
void solve(int n) {
// int value = query(1, N);
// for(int i = 1; i <= N; i++) {
// answer(i, i);
// }
int dis = query(1,2);
map<pair<int,int>,int> mp;
for(int i = 3; i <= n; i++){
mp[{i-1, i}] = query(i-1, i);
mp[{i-2, i}] = query(i-2, i);
}
for(int i = 1; i <= n; i++){
a[1] = i;
bool c = 1;
if(i + dis <= n){
c = 1;
a[2] = i + dis;
map<int,int> used;
used[a[1]] = 1;
used[a[2]] = 2;
for(int j = 3; j <= n; j++){
int x = a[j-1] - mp[{j-1,j}];
if(x >= 1 && used[x] == 0){
if((max({x,a[j-1],a[j-2]})-min({x,a[j-1],a[j-2]})==mp[{j-2, j}]) && (max(x,a[j-1]) - min(x,a[j-1])==mp[{j-1,j}])){
a[j] = x;
used[x] = j;
continue;
}
}
x = a[j-1] + mp[{j-1,j}];
if(x <= n && used[x] == 0){
if((max({x,a[j-1],a[j-2]})-min({x,a[j-1],a[j-2]})==mp[{j-2, j}]) && (max(x,a[j-1]) - min(x,a[j-1])==mp[{j-1,j}])){
a[j] = x;
used[x] = j;
continue;
}
}
c = 0;
}
if(c){
if(used[1]>used[n])continue;
for(int j = 1;j<=n;j++){
// cout<<a[j]<<" ";
answer(j,a[j]);
}
// cout<<endl;
return;
}
}
if(i - dis >= 1){
c = 1;
a[2] = i - dis;
map<int,int> used;
used[a[1]] = 1;
used[a[2]] = 2;
for(int j = 3;j<=n;j++){
int x = a[j-1] - mp[{j-1, j}];
if(x >= 1 && used[x] == 0){
if((max({x,a[j-1],a[j-2]})-min({x,a[j-1],a[j-2]})==mp[{j-2, j}]) && (max(x,a[j-1]) - min(x,a[j-1])==mp[{j-1,j}])){
a[j] = x;
used[x] = j;
continue;
}
}
x = a[j-1] + mp[{j-1,j}];
if(x <= n && used[x] == 0){
if((max({x,a[j-1],a[j-2]})-min({x,a[j-1],a[j-2]})==mp[{j-2, j}]) && (max(x,a[j-1]) - min(x,a[j-1])==mp[{j-1,j}])){
a[j] = x;
used[x] = j;
continue;
}
}
c = 0;
}
if(c){
if(used[1]>used[n]) continue;
for(int j = 1;j<=n;j++){
// cout<<a[j]<<" ";
answer(j,a[j]);
}
// cout<<endl;
return;
}
}
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |