#include <bits/stdc++.h>
#include "xylophone.h"
using namespace std;
#define int long long
// static int a[5000];
int a[5004];
int mp[5004][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;
vector<int> used(n+1,0);
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;
vector<int> used(n+1,0);
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;
}
}
}
}
Compilation message
/usr/bin/ld: /tmp/ccoTwKel.o: in function `main':
grader.cpp:(.text.startup+0x30): undefined reference to `solve(int)'
collect2: error: ld returned 1 exit status