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