D - ABS
$N=1$ のときは $X$ さんが $1$ 枚取るしかないため答えは $|a_1 - W|$ です。
$2 \le N$ のときは、$X$ さんが最初の操作で全てのカードを取るとスコア $|a_N - W|$ を達成できます。また、最初の操作で $N-1$ 枚のカードを取る、つまり $1$ 枚だけ残すとスコア $|a_{N-1} - a_N|$ を達成できます。$X$ さんが $2$ 枚以上残したとき、$Y$ さんが残り $1$ 枚になるまでカードを取るとスコアは $|a_{N-1} - a_N|$ となります。よって、$X$ さんがカードを $2$ 枚以上残した時、$Y$ さんがスコアを最小化するので、スコアは $|a_{N-1} - a_N|$ 以下になります。$X$ さんはスコアを最大化するので、$2$ 枚以上残す意味はなくなります。よって、答えは $max(|a_N - W|, |a_{N-1} - a_N|)$ です。
N, Z, W = map(int, input().split()) a = list(map(int, input().split())) if N == 1: print(abs(W - a[0])) else: print(max(abs(a[N - 1] - W), abs(a[N - 2] - a[N - 1])))
#include <bits/stdc++.h> using namespace std; int main() { int N, Z, W; cin >> N >> Z >> W; vector<int> a(N); for (int i = 0; i < N; i++) { cin >> a[i]; } if (N == 1) { cout << abs(W - a[0]) << '\n'; } else { cout << max(abs(a[N - 1] - W), abs(a[N - 2] - a[N - 1])) << '\n'; } }