#include "xylophone.h"
static int A[5001];
void solve(int N) {
int mx_dif = query(1, N);
int l = 1, r = N;
while(l < r) {
if(query(l,r-1) != mx_dif) break;
--r;
}
while(l < r) {
if(query(l+1, r) != mx_dif) break;
++l;
}
A[l] = 1;
A[r] = N;
int dif = 0;
for(int i = l-1; i >= 1; --i) {
int new_dif = query(i, l);
if(new_dif > dif) {
dif = new_dif;
A[i] = A[l] + dif;
} else {
A[i] = A[i+1] - query(i,i+1);
}
}
for(int i = l+1; i < r; ++i) {
int new_dif = query(l, i);
if(new_dif > dif) {
dif = new_dif;
A[i] = A[l] + dif;
} else {
A[i] = A[i-1] - query(i-1, i);
}
}
for(int i = r+1; i < N; ++i) {
int new_dif = query(r, i);
if(new_dif > dif) {
dif = new_dif;
A[i] = A[r] - dif;
} else {
A[i] = A[i-1] + query(i-1, i);
}
}
for(int i = 1; i <= N; i++) {
answer(i, A[i]);
}
}
/*
5
1 5 3 4 2
*/
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |