#include <iostream>
using namespace std;
/******************************************************
注:
flag=true执行后都是先执行第一个for循环,知道20排全部判断并输出完毕
再flag=false,执行第二个for循环
即:
第二个for循环是在20排都判断输出完毕后,没有相邻的座位号时执行
******************************************************/
int main() {
int num,p;//P代表输入每一次的购买票数
bool flag;//未初始化 默认为1
int ticket[21];//标记每一排的人数
for(int i=0;i<20;i++)ticket[i]=5;
cin>>num;
for(int i=0;i<num;i++){
//处理第i条命令
cin>>p;
flag=true; //初始化的值都是未购买,所以是真
for(int j=0;j<20;j++){
if(ticket[j]>=p){//有满足相邻的最小排
for(int k=(6-ticket[j]);k<(6-ticket[j])+p;k++){//**循环的参数重要**
cout<<k+j*5<<" ";
}
ticket[j]=ticket[j]-p;
flag=false;
cout<<endl;
break;
}
}
//如果不存在一个这样行:对输入的P有一个顺序的输出
/*
n=102
P=4 4 4 4 (100个) 2 2 这个if就是针对最后两个2的情况
*/
if(flag){
for(int j=0;j<20;j++){
for(int k=(6-ticket[j]);k<6;k++){//**循环的参数重要**
cout<<k+j*5<<" ";
}
p=p-ticket[j];
ticket[j]=0;
if(p==0)break;
}
cout<<endl;
}
}
}
/*
4
2 5 4 2
*/
using namespace std;
/******************************************************
注:
flag=true执行后都是先执行第一个for循环,知道20排全部判断并输出完毕
再flag=false,执行第二个for循环
即:
第二个for循环是在20排都判断输出完毕后,没有相邻的座位号时执行
******************************************************/
int main() {
int num,p;//P代表输入每一次的购买票数
bool flag;//未初始化 默认为1
int ticket[21];//标记每一排的人数
for(int i=0;i<20;i++)ticket[i]=5;
cin>>num;
for(int i=0;i<num;i++){
//处理第i条命令
cin>>p;
flag=true; //初始化的值都是未购买,所以是真
for(int j=0;j<20;j++){
if(ticket[j]>=p){//有满足相邻的最小排
for(int k=(6-ticket[j]);k<(6-ticket[j])+p;k++){//**循环的参数重要**
cout<<k+j*5<<" ";
}
ticket[j]=ticket[j]-p;
flag=false;
cout<<endl;
break;
}
}
//如果不存在一个这样行:对输入的P有一个顺序的输出
/*
n=102
P=4 4 4 4 (100个) 2 2 这个if就是针对最后两个2的情况
*/
if(flag){
for(int j=0;j<20;j++){
for(int k=(6-ticket[j]);k<6;k++){//**循环的参数重要**
cout<<k+j*5<<" ";
}
p=p-ticket[j];
ticket[j]=0;
if(p==0)break;
}
cout<<endl;
}
}
}
/*
4
2 5 4 2
*/