import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.ArrayList;
public class Main
{
static int[][]arr=new int[1000][10];
public static void main(String[] args) throws IOException {
BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
PrintWriter out=new PrintWriter(new BufferedOutputStream(System.out));
//在下方输入代码
int n=Integer.parseInt(in.readLine());
String[]strings=in.readLine().split(" ");
int[]counts=new int[n];
for (int i = 0; i < n; ++i) {
counts[i]=Integer.parseInt(strings[i]);
}
int[]counts2= counts.clone();
int start=0;
boolean flag=true;
int m=0;
int pre=1;//记录上次加的位置
int no=1;//记录当前加的位置
while (flag){
flag=false;
int r=0;
for (int j = 0; j < n; ++j) {
if (counts[j]!=0){
counts[j]--;
r++;
no=j;
flag=true;
}
}
if(r>1)
for (int i = 0; i < 10; ++i) {
start++;
for (int j = m; j < m+r; ++j,start++) {
arr[j][i]=start;
}
start--;
}
if (r==1){
if (pre==no) start+=2;
else start++;
for (int i = 0; i < 10; ++i,start+=2) {
arr[m][i]=start;
}
start-=2;
}
m+=r;
pre=no;
}
flag=true;
m=0;
ArrayList<Integer>list[]=new ArrayList[n];
for (int i = 0; i < n; ++i) {
list[i]=new ArrayList<>();
}
while (flag){
flag=false;
for (int i = 0; i < n; ++i) {
if (counts2[i]!=0){
list[i].add(m++);
counts2[i]--;
flag=true;
}
}
}
for (int i = 0; i < n; ++i) {
out.println("#"+(i+1));
for (int j : list[i]) {
out.print(arr[j][0]);
for (int k = 1; k < 10; ++k) {
out.print(" "+arr[j][k]);
}
out.println();
}
}
//在上方输入代码
out.close();
in.close();
}
}
L1-049 天梯赛座位分配(Java)
最新推荐文章于 2023-03-29 22:34:13 发布