试题编号: | 201609-2 |
试题名称: | 火车购票 |
时间限制: | 1.0s |
内存限制: | 256.0MB |
问题描述: |
问题描述 请实现一个铁路购票系统的简单座位分配算法,来处理一节车厢的座位分配。 输入格式 输入的第一行包含一个整数n,表示购票指令的数量。 输出格式 输出n行,每行对应一条指令的处理结果。 样例输入 4 样例输出 1 2 样例说明 1) 购2张票,得到座位1、2。 评测用例规模与约定 对于所有评测用例,1 ≤ n ≤ 100,所有购票数量之和不超过100。 |
#include <map>
#include <cmath>
#include <queue>
#include <cstdio>
#include <string>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <sstream>
#include <time.h>
#include <vector>
#include <list>
using namespace std;
int main()
{
int i, j, N, Max = 0;
cin >> N ; //
int num, Piao[20];
for (i = 0; i < 20; i++) //数组初始化
Piao[i] = 5;
for (i = 0; i < N; i++)
{
bool Flag = 0;
cin >> num;
for (j = 0; j < 20; j++)
{
if (Piao[j] >= num)
{
int k = 0;
while (k++ < num)
cout << j * 5 + 5 - Piao[j] + k <<' ';
cout << endl;
Piao[j] -= num;
Flag = 1;
break;
}
}
if (Flag == 0) //没找的能连坐的
{
int sum = 0;
for (j = 0; j < 20; j++)
{
if (sum < num && Piao[j] != 0)
{
if (num - sum > Piao[j])
{
int k = 0;
while (k++ < Piao[j])
cout << j * 5 + 5 - Piao[j] + k << ' ';
sum += Piao[j];
Piao[j] = 0;
}
else
{
int k = 0;
while (k++ < num - sum)
cout << j * 5 + 5 - Piao[j] + k << ' ';
cout << endl;
Piao[j] -= num - sum;
break;
}
}
}
}
}
cin >> N;
return 0;
}