爱排队的史莱姆 20pts 球条

题目描述

史莱姆学校最近出了一个排队的活动,所有的史莱姆都很喜欢,排队的规则是这样的,我们有一个很长的队伍,有n个史莱姆,每个史莱姆都有自己的一个身高。每次我们选择前m个史莱姆组成新的小队伍,只有当新的小队伍为m个史莱姆时候,我们会把小队伍中最高的史莱姆输出,然后此时还剩下m-1个史莱姆,我们继续从大队伍中的最前面的一个史莱姆加入到小队伍中,此时小队伍中又有m个史莱姆了,我们继续选取该小队伍中的最高的史莱姆输出。然后继续执行以上操作,直到最后大队伍和小队伍的史莱姆总和不到m个史莱姆,活动结束。

输入格式

输入一个整数n,输入一个整数m
第二行,输入n个整数A[i]

输出格式

输出一行整数

样例

Input 1

3 1 1 2 3

Output 1

1 2 3

数据范围

m<=n<=1000
1<=A[i]<=1e9

\text{My Code}

#include <bits/stdc++.h>
using namespace std;
queue<int> s1;
int s2[1010];
int n,m,a[1010];
int main() {
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        s1.push(a[i]);
    }
    for(int i=1;i<=m;i++){
        s2[i]=s1.front();
        s1.pop();
    }
    for(int i=m;i<=n;i++){
        sort(s2+1,s2+i);
        cout<<s2[i]<<" ";
        s2[i+1]=s1.front();
        s1.pop();
    }
    return 0;
}

不知道为什么只有 1 和 9 对了

优先队列试试

1 个赞

谢谢老师