试题编号: | 201609-2 |
试题名称: | 火车购票 |
时间限制: | 1.0s |
内存限制: | 256.0MB |
问题描述: | 问题描述 请实现一个铁路购票系统的简单座位分配算法,来处理一节车厢的座位分配。 输入格式 输入的第一行包含一个整数n,表示购票指令的数量。 输出格式 输出n行,每行对应一条指令的处理结果。 样例输入 4 样例输出 1 2 样例说明 1) 购2张票,得到座位1、2。 评测用例规模与约定 对于所有评测用例,1 ≤ n ≤ 100,所有购票数量之和不超过100。 |
我的代码可以实现题目描叙的功能,也很简短,但在评测时只有90分,很伤心,目前还不知道什么原因,大家指导一下。。。
#include<iostream>
#include<map>
using namespace std;
const int maxn=21;
map<int,int> cnt;
int main() {
int n,s,route[maxn];
cin>>n;
for(int i=0,j=1; i<n; i++,j+=5) {
route[i]=j;
cnt[route[i]]=5;
}
int len=n;
while(n--) {
cin>>s;
for(int i=0; i<len; i++) {
if(s<=cnt[route[i]]&&s>0) {
for(int j=route[i]-cnt[route[i]]+5; j<route[i]-cnt[route[i]]+s+4; j++)
cout<<j<<" ";
cout<<route[i]-cnt[route[i]]+s+4<<endl;
cnt[route[i]]-=s;//获得剩余座位
s=0;//保证传进来的指令只进行一次,for循环到满足s能坐全就结束。循环到下一次指令
}
}
}
return 0;
}