| # | Time | Username | Problem | Language | Result | Execution time | Memory | 
|---|---|---|---|---|---|---|---|
| 1253901 | terracottalite | Xylophone (JOI18_xylophone) | C++20 | 0 ms | 0 KiB | 
#include <stdio.h>
#include <stdlib.h>
/*
int query(int l, int r) {
    int ret;
    printf("%d %d\n", l, r);
    fflush(stdout);
    scanf("%d", &ret);
    fflush(stdout);
    return ret;
}
*/
void solve(int n) {
    int l = 2;
    int r = n+1;
    int a[5005] = { 0 };
    a[n] = 0;
    a[n-1] = query(n-1, n);
    for (int i=n-2;i>=1;i--) {
        int x = query(i, i+1);
        int y = query(i, i+2);
        if (y == abs(a[i+1]+x - a[i+2])) a[i] = a[i+1]+x;
        else if (y == abs(a[i+1]-x - a[i+2])) a[i] = a[i+1]-x;
        else {
            if (a[i+2] > a[i+1]) a[i] = a[i+1] + x;
            else a[i] = a[i+1] - x;
        }
    }
    int mx1 = -100000;
    int mx2 = -1;
    int mn1 = 100000;
    int mn2 = -1;
    for (int i=1;i<=n;i++) {
        if (a[i] > mx1) {
            mx1 = a[i];
            mx2 = i;
        }
        if (a[i] < mn1) {
            mn1 = a[i];
            mn2 = i;
        }
    }
    if (mx2 < mn2) {
        for (int i=1;i<=n;i++) {
            a[i] = -a[i] + mx1 + 1;
        }
    } else {
        for (int i=1;i<=n;i++) {
            a[i] = a[i] - mn1 + 1;
        }
    }
    for (int i=1;i<=n;i++) {
        //printf("%d ", a[i]);
        answer(i, a[i]);
    }
}
/*
int main()
{
    solve(5);
}
*/
// 21534
