CCF201609-2 火车购票
题目:
题目分析:
1.使用数组a[]记录每一个位置安排情况,使用数组b[]记录每一排位置安排情况;
2.对于每一个购票信息:先查询每一排是否可以安排,如果可以就安排并输出安排信息,如果不可以,则从1到100查询每一个空位,从小到大安排。
#include<iostream>
using namespace std;
int a[110],b[25],n,m; //a[]_记录每个位置是否售出,b[]记录每排售出数
int main(){
cin>>n;
while(n--){ //循环n次,输入n个购票信息
cin>>m;
int nu=0; //nu_记录购买m个座位已安排位置的数量
for(int i=1;i<=20;i++){ //查询每排
if(5-b[i]>=m){ //空位数>=m,可以售卖
b[i]+=m; //修改此排的售出位置数
for(int j=(i-1)*5+1;j<=i*5;j++){ //查询此排,安排位置
if(a[j]==0){
a[j]=1; //修改标记该位置售出
cout<<j<<" "; //输出该位置
nu++; //增加安排数量
}
if(nu==m){ //m个都安排,break
cout<<endl; //注意输出格式
break;
}
}
break; //m个都安排,break
}
}
if(nu==0){ //还没有安排,从小到大安排
for(int i=1;i<=100;i++){ //查询空位
if(a[i]==0){ //安排空位
a[i]=1;
cout<<i<<" "; //输出该位置
nu++;
}
if(nu==m){//m个都安排,break
cout<<endl;
break;
}
}
}
}
return 0;
}