本题的IO量较大,为了避免IO效率影响算法速度的评判,我们采用一种特殊的方式输入数据
首先输入四个整数n,m(1≤n,m≤107),k1,k2(0≤k1,k2≤232−1)分别是序列长度,询问次数,生成器种子。
再将下方代码中的k1,k2设为输入的k1,k2,请你自行用下方代码的方式来生成序列
unsigned k1,k2; unsigned long long xorShift128Plus() { unsigned long long k3 = k1, k4 = k2; k1 = k4; k3 ^= k3 << 23; k2 = k3 ^ k4 ^ (k3 >> 17) ^ (k4 >> 26); return k2 + k4; }
for(int i=1;i<=n;i++){ a[i]=xorShift128Plus()%200-100; }
再请你用下方的方式生成询问的区间
for(int i=1;i<=m;i++){ l[i]=xorShift128Plus()%n+1; r[i]=xorShift128Plus()%n+1; if(l[i]>r[i]) swap(l[i],r[i]); }
100000 100000 998244353 1000000007
9830