#include <bits/stdc++.h>
#include "xylophone.h"
using namespace std;
// 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])){
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])){
a[j] = x;
used[x] = j;
continue;
}
}
c = 0;
}
if(c){
bool cc= 1;
if(used[1]>used[n])continue;
for(int j = 1;j<=n;j++){
if(used[j]==0) cc = 0;
}
if(cc==0) 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])){
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])){
a[j] = x;
used[x] = j;
continue;
}
}
c = 0;
}
if(c){
bool cc = 1;
for(int j = 1;j<=n;j++){
if(used[j]==0) cc = 0;
}
if(cc==0) continue;
if(used[1]>used[n]) continue;
for(int j = 1;j<=n;j++){
// cout<<a[j]<<" ";
answer(j,a[j]);
}
// cout<<endl;
return;
}
}
}
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
344 KB |
Output is correct |
2 |
Correct |
0 ms |
344 KB |
Output is correct |
3 |
Correct |
1 ms |
2392 KB |
Output is correct |
4 |
Correct |
1 ms |
2392 KB |
Output is correct |
5 |
Incorrect |
1 ms |
2528 KB |
Wrong Answer [6] |
6 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
344 KB |
Output is correct |
2 |
Correct |
0 ms |
344 KB |
Output is correct |
3 |
Correct |
1 ms |
2392 KB |
Output is correct |
4 |
Correct |
1 ms |
2392 KB |
Output is correct |
5 |
Incorrect |
1 ms |
2528 KB |
Wrong Answer [6] |
6 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
344 KB |
Output is correct |
2 |
Correct |
0 ms |
344 KB |
Output is correct |
3 |
Correct |
1 ms |
2392 KB |
Output is correct |
4 |
Correct |
1 ms |
2392 KB |
Output is correct |
5 |
Incorrect |
1 ms |
2528 KB |
Wrong Answer [6] |
6 |
Halted |
0 ms |
0 KB |
- |