只用了一个大小为20的数组表示二十排,每个数组元素表示该排剩余座位数量。
30行代码,Yeah~
#include<iostream>
using namespace std;
int main(){
int n, m, i, cnt;
bool contiflag;
cin >> n;
int seat[20];
for(i = 0; i < 20; i++) seat[i] = 5;
while(n--){
contiflag = false;
cnt = 0;
cin >> m;
for(i = 0; i < 20; i++){
if(seat[i] >= m){
contiflag = true;
break;
}
}
if(contiflag){
for(int j = 0; j < m; j++)
cout << i*5 + (5 - --seat[i]) << " ";
}else{
for(i = 0; seat[i] == 0; i++);
for(; i < 20; i++){
while(seat[i]-- && m--){
cout << i*5 + (5 - (seat[i])) << " ";
if(m <= 0) contiflag = true;
}
if(contiflag) break;
}
}
cout << endl;
}
return 0;
}