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 <algorithm>
#include <iostream>
using namespace std;
int arr[5001];
int zero(int x){
return (x>0)?x:-x;
}
void solve(int N) {
arr[1] = 1;
arr[2] = query(1, 2) + 1;
int mn = 1;
for(int i=3; i<=N; i++){
int t = query(i-2, i);
if(t==zero(arr[i-1]- arr[i-2])){
int k = query(i-1, i);
if(arr[i-1]>arr[i-2]){
arr[i] = arr[i-1] - k;
}else{
arr[i]= arr[i-1] + k;
}
}else{
int k = query(i-1, i);
if(arr[i-1]>arr[i-2]){
if(k==t){
arr[i] = arr[i-1] - k;
}else{
arr[i] = arr[i-1] + k;
}
}else{
if(k==t){
arr[i] = arr[i-1] + k;
}else{
arr[i] = arr[i-1] - k;
}
}
}
mn = min(arr[i], mn);
}
//for(int i=1; i<=N; i++){
// cout<<i<<" "<<arr[i]<<endl;
//}
int idx1 = 1, idx2 = 1;
for(int i=1; i<=N; i++){
arr[i] = arr[i] - mn + 1;
if(arr[i]>arr[idx1]){
idx1 = i;
}else if(arr[i]<arr[idx2]){
idx2 = i;
}
}
if(idx1<idx2){
mn = arr[1];
for(int i=1; i<=N; i++){
arr[i] = arr[1]*2-arr[i];
mn = min(arr[i], mn);
}
for(int i=1; i<=N; i++){
arr[i] = arr[i] - mn + 1;
}
}
//for(int i=1; i<=N; i++){
// cout<<i<<" "<<arr[i]<<endl;
//}
for(int i=1; i<=N; i++){
answer(i, arr[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... |