最后找到的最大区间一定是以某一个点开始的,遍历每个数,看哪个数满足,复杂度2e9优化:排序之后把连在一起的一块当作一个点,两个连在一块的段中间没有数的块也当作一个点,记录这些块的长度,变为5e6复杂度,最大区间一定是以某一个块的第一个数为起点开始的。双指针维护每个块为起点能到达的最远距离。 #include<bits/stdc++.h> using namespace std; const int M = 1000010; const int N = 500010; int a[N]; int idx ; long long n,m,k; struct Node{ int l,r,...