#include <bits/stdc++.h>
#include "xylophone.h"
using namespace std;
void solve(int N) {
vector<int> res(N + 1);
int l = 1, r = N;
while (query(l, r - 1) == N - 1) r--;
while (query(l + 1, r) == N - 1) l++;
res[l] = 1;
res[r] = N;
int mx = 0, id = 0, k = 1e9;
for (int i = r + 1; i <= N; i++) {
int x = query(r, i);
if (x == mx) {
int y = query(id, i);
res[i] = k + y;
}
else {
res[i] = N - x;
mx = max(mx, x);
}
if (res[i] < k) {
k = res[i];
id = i;
}
}
mx = id = k = 0;
for (int i = l - 1; i >= 1; i--) {
int x = query(i, l);
if (x == mx) {
int y = query(i, id);
res[i] = k - y;
}
else {
res[i] = x + 1;
mx = max(mx, x);
}
if (res[i] > k) {
k = res[i];
id = i;
}
}
mx = id = k = 0;
for (int i = l + 1; i < r; i++) {
int x = query(l, i);
if (x == mx) {
int y = query(id, i);
res[i] = k - y;
}
else {
res[i] = x + 1;
mx = max(mx, x);
}
if (res[i] > k) {
k = res[i];
id = i;
}
}
for (int i = 1; i <= N; i++) {
answer(i, res[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... |