package ccf;
import java.util.Scanner;
public class my201609_2 {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
int n=input.nextInt();
int []data=new int[n]; //购票指令,要几张票
int [][]result=new int[n][];
for (int i = 0; i < data.length; i++) {
data[i]=input.nextInt();
result[i]=new int [data[i]];
}
int []seat=new int[100]; //100个座位
for(int i=0;i<100;i++) { //初始时每个都是空座位
seat[i]=0;
}
for (int i = 0; i < n; i++) { //遍历每条购票指令
if(data[i]==1) { //如果只要一张,编号最小的空位给他
for(int j=0;j<100;j++) { //遍历找到空座位
if(seat[j]==0) {
result[i][0]=j+1;
seat[j]=1;
break;
}
}
}
else { //如果要2-5张
int end=-1; //从几号开始
for(int j=0;j<20;j++) { //遍历每一排
int sum=0; //某一排连续的空座位最多几个
for (int j2 = 0; j2 < 5; j2++) {
if(seat[j*5+j2]==0) {
sum++;
if(sum==data[i]) {
end=j2;
break;
}
}
else {
sum=0;
}
}
if(sum==data[i]) {//可以给他连续的座位
for (int k = 0; k < data[i]; k++) {
result[i][data[i]-k-1]=j*5-k+end+1;
seat[j*5-k+end]=1;
}
break;
}
else {//这一排不能给他连续 那就下一排
if(j<19)continue;
else {
for(int m=0;m<data[i];m++) {//遍历每个人
for(int j1=0;j1<100;j1++) { //遍历找到空座位
if(seat[j1]==0) {
result[i][m]=j1+1;
seat[j1]=1;
break;
}
}
}
}
}
}
}
}
for(int i=0;i<n;i++) {
for(int j=0;j<data[i];j++) {
System.out.print(result[i][j]+" ");
}
System.out.println();
}
}
}
最近在备考12月份ccf考试,将做出来的题发到博客,欢迎大家与我探讨,留言看到后会及时回复大家。