題目描述
每到考試時,為了保證每位同學和其周圍的同學都不認識,小明想出了如下策略:
假設某個考場有 n 個學校的考生,第 i 所學校有 t名考生參加考試。令每校考生排成一列縱隊,第 i+1 隊的考生排在第 i 隊考生之後。
從第 1 所學校開始,各校的第 1 位考生順次入座,然後是各校的第 2 位考生…… 以此類推。如果最後只剩下 1 所學校還沒有分配座位,則需要安排他們的考生隔位就坐。
但是小明不會為各校的考生分配座位號,請你為各校考生自動生成座位號,從 1 開始編號。
輸入第一行輸入參加考試的學校數 n (不超過100的正整數);第二行輸入 n 個不超過100的正整數(確保給出的整數都是10的倍數),其中第 i 個數對應第 i 所學校的考生人數,數字間以空格分隔。
輸出從第 1 所學校的開始,順次輸出考生的座位號。每10名考生佔一行,座位號間以 1 個空格分隔,行首尾不得有多餘空格。另外,每所學校的第一行按「#x」輸出該校的編號x,從 1 開始。
樣例輸入
330 40 20
樣例輸出
#11 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
#22 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
#33 6 9 12 15 18 21 24 27 30
33 36 39 42 45 48 51 54 57 60
用vector來存每個位置的值,然後cnt計數++,當cnt的值等於n-1說明只有最後乙個學校每日有安排座位,最後就是注意格式問題,不能輸出多於的空格和換行
#include
using namespace std;
const
int maxn =
1e5+5;
vector<
int>v[
110]
;int a[
110]
;int b[
110]
;int
main()
}if(num == n -
1&& v[cnt]
.size()
< a[cnt]
)else
if(v[cnt]
.size()
< a[cnt]
) v[cnt]
.push_back
(i), cnt++
;else cnt++
, i -=1
;if(cnt == n +
1) cnt =1;
} vector<
int>
::iterator it;
for(
int i =
1; i <= n; i++
,cout
}
zzulioj 2494 考試排座位
題目描述 每到考試時,為了保證每位同學和其周圍的同學都不認識,小明想出了如下策略 假設某個考場有 n 個學校的考生,第 i 所學校有 t名考生參加考試。令每校考生排成一列縱隊,第 i 1 隊的考生排在第 i 隊考生之後。從第 1 所學校開始,各校的第 1 位考生順次入座,然後是各校的第 2 位考生 ...
ZZULIOJ 2494 考試排座位(模擬)
時間限制 1 sec 記憶體限制 128 mb 提交 74 解決 20 提交 狀態 討論版 命題人 admin 題目描述 每到考試時,為了保證每位同學和其周圍的同學都不認識,小明想出了如下策略 假設某個考場有 n 個學校的考生,第 i 所學校有 t名考生參加考試。令每校考生排成一列縱隊,第 i 1 ...
樹狀陣列,HDOJ2494
幾個打桌球的漢子住在一條直線上,他們每個人都有乙個rank值,現在他們要比賽,就得選乙個人當裁判,裁判只能住在比賽兩個人的房子之間,而且rank值也必須在比賽兩個人之間。現在問一共能打多少場比賽 直觀就是列舉裁判的位置,那麼ans l i r i i l i n i 1 r i 也就是左邊比他低的乘...