U431308 Maximum-Gap

题目描述

给你一个长度为 $n$ 的序列 $a$,求它排完序后的 $\max(\lvert a_i-a_{i-1}\rvert)$。

输入格式

第一行,一个正整数 $t$,表示数据组数,一个 64 位无符号种子 接下来 $t$ 行,每行一个正整数 $n$。

输出格式

一个数,表示序列排完序后的 $\max(\lvert a_i-a_{i-1}\rvert)$。

说明/提示

对于所有数据,$n\le 1\times 10^8,\lvert a_i\rvert\le 1\times 10^{18}$。 使用以下数据生成器(用法见注释,样例没用) ```cpp #include using namespace std; namespace DATA { long long idx; long long MT[624]; void Seed(long long seed) { idx = 0; MT[0] = seed; for (long long i = 1; i < 624; i++) { long long t = 1812433253 * (MT[i - 1] ^ (MT[i - 1] >> 30)) + i; MT[i] = t & 0xffffffffffffffff; } } void generate() { for (int i = 0; i < 624; i++) { long long y = (MT[i] & 0x8000000000000000) + (MT[(i + 1) % 624] & 0x7fffffffffffffff); MT[i] = MT[(i + 397) % 624] ^ (y >> 1); if (y & 1) MT[i] ^= 2567483615; } } long long Rand() { if (idx == 0) generate(); long long y = MT[idx]; y = y ^ (y >> 11); y = y ^ ((y 18); idx = (idx + 1) % 624; return y; } } using DATA::Rand; using DATA::Seed; constexpr int N = 1e8 + 3; long long a[N]; // a in the question int main() { int t, n; // n,t in the question unsigned long long seed; // seed in the question cin >> t >> seed; // input Seed(seed); // set seed while (t--) { cin >> n; // input for (int i = 1; i