单调队列模板

void letin(int x) {
    if(l > r) { que[++r].first = a[x]; que[r].second = x; return ; }
    while(a[x] < que[r].first && r >= l) r --;
    que[++r].first = a[x]; que[r].second = x;
    while(x - que[l].second + 1 > m) l ++;
}

前三行的意思是队尾没你强且没你年轻就出队,然后你入队。
最后一行的意思是如果队首太老老到不符合要求了就出队。

posted @ 2024-03-13 21:27  NEUQ-zyb  阅读(6)  评论(0)    收藏  举报