比赛的时候没想到什么好方法,题虽然看懂了,但要实现要花不少功夫,还不一定对,就放弃了。。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll maxn=100+5;
int n,m,res,ans,len,T,k,num,sum,t,cnt;
vector<int>a[maxn];
int b[maxn];
void input()
{
    ios_base::sync_with_stdio(false);
    cin>>n;
    for(int i=0;i<n;i++){
        cin>>b[i];
        sum+=b[i]*10;
    }
    int cas=1,man=0;
    while(sum--){
        for(int i=0;i<n;i++){
            if(a[i].size()<b[i]*10){   //该学校还没排完
                a[i].push_back(cas);
                if(man+1>=n) cas+=2;  //只剩一个学校
                else cas++;
                man=0;
                for(int i=0;i<n;i++){
                    if(a[i].size()>=b[i]*10)
                        man++;   //统计还剩几个学校
                }
            }
        }
    }
    for(int i=0;i<n;i++){
        cout<<"#"<<i+1<<endl;
        for(int j=0;j<a[i].size();j++){
            cout<<a[i][j];
            if(j%10==9) cout<<'\n';
            else cout<<' ';
        }
    }
}
int main()
{
    input();
    return 0;
}

借鉴网上一个dalao的