一个含有 n 项的数列 (n<=2000000),求出每一项前的 m 个数到它这个区间内的最小值。若前面的数不足 m 项则从第 1 个数开始,若前面没有数则输出 0。
#include <bits/stdc++.h>
using namespace std;
const int maxn=2e7+10;
int a[maxn],q[maxn];
int main() {
int n,m;
scanf("%d%d",&n,&m);
for(int i=1; i<=n; i++)
scanf("%d",&a[i]);
int t=0,h=1;
printf("0\n");
for(int i=1; i<n; i++) {
while(t>=h&& (1) >=a[i])
(2);
q[(3)]=i;
while(q[t]-(4)+1>m) h++;
printf("%d\n",(5));
}
return 0;
}
A.t++;
B.t−−
C.++t
D.a[q[h]]
E.a[h]
F.q[h]
G.a[q[t]]
H.a[t]
这题怎么做啊 awa