参考了柳神的 改了些自己容易理解的
#include <cstdio>
#include <iostream>
#include <string>
#include <cctype>
#include <vector>
#include <algorithm>
using namespace std;
//知道这是第几把椅子 椅子上坐的是哪个学校的人
int main()
{
//sum计数到人退出 cnt放座位
int n,sum = 0,cnt = 1, id_school[100010],num[110],all =0;
cin >> n;
vector<vector<int>> v(n + 1);//几个队
for(int i = 1; i <= n; i++)
{
cin >> num[i];
all += num[i];
}
while(1)//拖着椅子在n个学校前面转
{
for(int i = 1; i < v.size(); i++)
{
if(v[i].size() < num[i] * 10)
{
sum++;
if(id_school[cnt - 1] != i)
{
id_school[cnt] = i;
v[i].push_back(cnt);
cnt++;
}
else
{
id_school[cnt + 1] = i;
v[i].push_back(cnt + 1);
cnt += 2;
}
if(sum == all * 10) break; //人都排齐了就跳出去
}
}
if(sum == all * 10) break;
}
for(int i = 1; i < v.size(); i++)
{
cout << "#" << i << endl;
for(int j = 0; j < v[i].size(); j++)
{
cout << v[i][j];
if((j + 1) % 10 == 0) cout << endl;
else cout << " ";
}
}
return 0;
}