中科大机试:火车票订购
题目描述:
火车经过X站,火车最大载客人数为m,有n个订票请求,请求订购从a站到b站的k张票,若能满足订购要求则输出1,否则输出0。
题目链接
http://noobdream.com/DreamJudge/Issue/page/1458/
代码
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n,m; //n为请求个数,m为最大容量
cin>>n>>m;
int s[500] = {0};
while(n--)
{
int a,b,k;
int flag = 1;
cin>>a>>b>>k;
for(int i=a;i<b;i++)
{
s[i] += k;
if(s[i]>m)
{
for(int j=a;j<=i;j++)
s[j] -= k;
flag = 0;
break;
}
}
cout<<flag<<endl;
}
return 0;
}
思考
这个题目刚开始想的时候只打算在上下站点的时候进行人数变化,但是这样对于上车的三种情况就很难进行比较。看到别人的代码,对每个请求区间的站点都进行了人数变化,这样的话不用考虑三种情况了,不错哦!