问题描述
试题编号: | 201609-2 |
试题名称: | 火车购票 |
时间限制: | 1.0s |
内存限制: | 256.0MB |
问题描述: | 问题描述 请实现一个铁路购票系统的简单座位分配算法,来处理一节车厢的座位分配。 输入格式 输入的第一行包含一个整数n,表示购票指令的数量。 输出格式 输出n行,每行对应一条指令的处理结果。 样例输入 4 样例输出 1 2 样例说明 1) 购2张票,得到座位1、2。 评测用例规模与约定 对于所有评测用例,1 ≤ n ≤ 100,所有购票数量之和不超过100。 |
//写这个的时候看错数据范围了,应该有100个座而不是20个,然后 一直得30,但感觉还没错,果然,得认真看题
#include<iostream>
using namespace std;
int main()
{
int a[101];
for(int i=1; i<=100; i++)
{
a[i] = i;
}
int b[20];
for(int i=0; i<20; i++)
{
b[i] = 5;
}
int n, t;
cin >> n;
while(n--)
{
cin >> t;
for(int i=0; i<20; i++)
{
// cout << b[i] << endl;
if(b[i] >= t)
{
// while(t)
{
for(int j=5*i+1; j<=5*(i+1); j++)
if(a[j])
{
cout << a[j] << " ";
a[j] = 0;
b[i]--;
t--;
if(t == 0)
break;
}
}
cout << endl;
// cout << b[i] << endl;
break;
}
}
// else
if(t){
for(int j=1; j<=100; j++)
{
if(a[j]){
cout << a[j] << " ";
a[j] = 0;
t--;
b[(j+4)/5-1]--;
// cout << b[(j+4)/5-1] << endl;
if(t == 0)
break;
}
}
cout << endl;}
// break;
}
return 0;
}