【问题描述】
小希最近找到了大公司的客户经理的新工作,每天工作时间为 L 分钟,他主要为 n 个固定的高端客人服务,第 i 个客人会在第 ti 分钟到来,他需要为其服务 li 分钟,在此期间不会有其他客人到来。
他喜欢在工作的间隙放松一下,喝杯咖啡,或者做做简单的运动,每次需要 a 分钟的时间,如果可以,这样惬意的事情他能够连续做好多次。但在有顾客的时间里,他必须在工作岗位上,否则,他会被投诉。那么,在一天的工作时间之内,他最多有几次这样轻松的时光?
【输入形式】
输入的第一行包含3个整数 n、L 和 a。
接下来的 n 行,每行两个整数 ti 和 li,分别表示第i个客人到来的时间和需要服务的时间,输入保证 ti+li ≤ ti+1
【输出形式】
输出为一个整数,表示小希在一天的工作时间内最多可以放松多少次?
【样例输入】
2 11 3
0 1
1 1
【样例输出】
3
#include<iostream>
using namespace std;
int main()
{
int n,L,a;
cin>>n>>L>>a;
int z[n][2],q[n];
//定义二维数组z客人到来的时间及服务时间,数组q存储时间间隔
//n个客人有n-1个间隔再加上总时间减去服务总时间的一个间隔
//总时间减去服务总时间,可分为两部分放置在首末客人到来前后,但放在一处时除a可得最大值(两处会去掉小数部分,小数部分相加可能会大于1)
for(int x=0;x<n;x++)
{
for(int y=0;y<2;y++)
{
cin>>z[x][y]; //输入数据
}
}
for(int i=0;i<n-1;i++)
{
q[i]=z[i+1][0]-z[i][0]-z[i][1];
//赋值间隔时间=后一个客人到来时间-(前一个客人到来时间+服务时间)
}
q[n-1]=L-z[n-1][0]-z[n-1][1]+z[0][0];
//赋值总时间间隔=总时间-(最后一个客人到来时间+服务时间-第一个客人到来时间)
int num=0; //定义次数
for(int s=0;s<n;s++) //循环赋值
{
num=num+q[s]/a;
}
cout<<num;
return 0;
}