题目链接:https://vjudge.net/contest/208482#problem/C
题意描述:N个人去按水管开关,按一次流T秒的水,第i个人在ti秒按开关,问水管一共流多少秒水。但是,当第一个人在t1秒按完开关,在还没流完T秒时,第二个人又在t2秒按下了开关,那么第一个人按下开关的效果是流了t2-t1秒水,没有流够T秒。
数据范围:
1≤N≤200,000
1≤T≤109
0=t1<t2<t3<,…,<tN−1<tN≤109
T and each ti are integers.
解题思路:模拟。。。
代码如下:
#include<iostream>
using namespace std;
int n,t,a[200005],l,r,j;
long long s;
int main()
{
cin>>n>>t;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
for(int i=1;i<=n;i++)
{
if(i==n)s+=t;
else if(a[i+1]-a[i]<=t)s=s+a[i+1]-a[i];
else if(a[i+1]-a[i]>t)s+=t;
}
cout<<s;
return 0;
}