ACWING.132 小组队列
https://www.acwing.com/problem/content/134/

#include <bits/stdc++.h>
using namespace std;
const int N=1010,M=1000010;
int teamid[M],c=1;
int main(){
    int n;
    while(cin>>n,n){
        cout<<"Scenario #"<<c<<endl;
        c++;
        queue<int> team;
        queue<int> person[N];
        for(int i=0;i<n;i++){
            int cnt;
            cin>>cnt;
            while(cnt--){
                int x;
                cin>>x;
                teamid[x]=i;
            }
        }
        string command;
        while(cin>>command,command!="STOP"){
            if(command=="ENQUEUE"){
                int x;
                cin>>x;
                int tid=teamid[x];
                if(person[tid].empty()) team.push(tid);
                person[tid].push(x);
            }
            else{
                int tid=team.front();
                cout<<person[tid].front()<<endl;
                person[tid].pop();
                if(person[tid].empty()) team.pop();
            }
        }
        cout<<endl;
    }
    return 0;
}

ACWING.135 最大子序和
https://www.acwing.com/problem/content/137/

#include <bits/stdc++.h>
using namespace std;
const int N=300010;
int n,m,sum[N],q[N];
int main(){
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        cin>>sum[i];
        sum[i]+=sum[i-1];
    }
    int l=1,r=1,ans=-100000000;
    for(int i=1;i<=n;i++){
        while(l<=r&&q[l]<i-m) l++;
        ans=max(ans,sum[i]-sum[q[l]]);
        while(l<=r&&sum[q[r]]>=sum[i]) r--;
        q[++r]=i;
    }
    cout<<ans<<endl;
    return 0;
}

ACWING.154 滑动窗口
https://www.acwing.com/problem/content/156/

#include <bits/stdc++.h>
using namespace std;
const int N=1000010;
int n,m,a[N],q[N];
int main(){
    cin>>n>>m;
    for(int i=0;i<n;i++)cin>>a[i];
    int l=0,r=0;
    for(int i=0;i<n;i++){
        if(l<=r&&q[l]<=i-m) l++;
        while(l<=r&&a[q[r]]>=a[i]) r--;
        q[++r]=i;
        if(i>=m-1) cout<<a[q[l]]<<" ";
    }
    cout<<endl;
    l=0,r=0;
    for(int i=0;i<n;i++){
        if(l<=r&&q[l]<=i-m) l++;
        while(l<=r&&a[q[r]]<=a[i]) r--;
        q[++r]=i;
        if(i>=m-1) cout<<a[q[l]]<<" ";
    }
    cout<<endl;
    return 0;
}