#include <iostream>
using namespace std;
int left_seat[21]; // 记录每排剩余的座位数,共20排,100个座位
int row_start[21]; // 记录每次访问该排时的起点位置
int main()
{
std::ios::sync_with_stdio(false);
int n;
cin >> n;
for (int i = 1; i <= 20; i++)
{
row_start[i] = (i - 1) * 5 + 1;
}
for (int i = 1; i <= 20; i++)
{
left_seat[i] = 5;
}
// 最多不超过5张
while (n--)
{
int demand;
cin >> demand;
bool flag = false;
for (int i = 1; i <= 20; i++)
{
if (left_seat[i] >= demand)
{
for (int j = row_start[i]; j < row_start[i] + demand; j++)
{
cout << j << " ";
}
flag = true;
left_seat[i] -= demand;
row_start[i] += demand;
break;
}
else if (i == 20 && !flag) // 一行满足的情况已分配完,从剩下的零散座位中组合
{
int cnt = 0;
for (int j = 1; j <= 20; j++)
{
if (left_seat[j] && cnt != demand)
{
for (int k = row_start[j]; left_seat[j] > 0; k++)
{
left_seat[j]--;
cnt++;
cout << k << " ";
}
}
}
}
}
cout << endl;
}
return 0;
}
201609-2 火车购票【模拟】
最新推荐文章于 2021-09-02 20:36:59 发布