zzulioj 2494: 考試排座位

題目描述

每到考試時,爲了保證每位同學和其周圍的同學都不認識,小明想出瞭如下策略:
假設某個考場有 N 個學校的考生,第 i 所學校有 t名考生參加考試。令每校考生排成一列縱隊,第 i+1 隊的考生排在第 i 隊考生之後。
從第 1 所學校開始,各校的第 1 位考生順次入座,然後是各校的第 2 位考生…… 以此類推。如果最後只剩下 1 所學校還沒有分配座位,則需要安排他們的考生隔位就坐。
但是小明不會爲各校的考生分配座位號,請你爲各校考生自動生成座位號,從 1 開始編號。
 

輸入

第一行輸入參加考試的學校數 N (不超過100的正整數);第二行輸入 N 個不超過100的正整數(確保給出的整數都是10的倍數),其中第 i 個數對應第 i 所學校的考生人數,數字間以空格分隔。
 

輸出

從第 1 所學校的開始,順次輸出考生的座位號。每10名考生佔一行,座位號間以 1 個空格分隔,行首尾不得有多餘空格。另外,每所學校的第一行按“#X”輸出該校的編號X,從 1 開始。
 

樣例輸入 

3
30 40 20

樣例輸出 

#1
1 4 7 10 13 16 19 22 25 28
31 34 37 40 43 46 49 52 55 58
61 63 65 67 69 71 73 75 77 79
#2
2 5 8 11 14 17 20 23 26 29
32 35 38 41 44 47 50 53 56 59
62 64 66 68 70 72 74 76 78 80
82 84 86 88 90 92 94 96 98 100
#3
3 6 9 12 15 18 21 24 27 30
33 36 39 42 45 48 51 54 57 60

代碼如下:

#include<bits/stdc++.h>
using namespace std;
int a[110][110];
int main(){
	int n;
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		scanf("%d",&a[i][0]);
	}
	int t=0,g=0,f=0,k=1;
	while(1){
		t++;
		f=1;
		for(int i=1;i<=n;i++){
			if(a[i][0]>=t){
				if(g==i)k++;
				a[i][t]=k++;
				g=i;f=0;
			}
		}
		if(f)break;
	}
	for(int i=1;i<=n;i++){
		int num=a[i][0];
		printf("#%d",i);
		for(int j=1;j<=num;j++){
			if(j%10==1)printf("\n%d",a[i][j]);
			else printf(" %d",a[i][j]);
		}
		printf("\n");
	}
	return 0;
} 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章