如果所有的a[i] = n + 1 - i,那么程序运行过程中tail - head的最大值是?
#include
using namespace std;
const int N = 1000010;
int a[N], q[N];
int main()
{
int n, k;
scanf("%d%d", &n, &k);
for (int i = 0; i < n; i++) scanf("%d", &a[i]);
int head = 0, tail = -1;
for (int i = 0; i < n; i++)
{
if (head <= tail && i - k + 1 > q[head]) head++;
while (head <= tail && a[i] < a[q[tail]]) tail--;
q[++tail] = i;
if (i + 1 >= k) printf("%d ", a[q[head]]);
}
cout << endl;
return 0;
}
k
k - 1
n
0