题目链接
题面
题目大意
给出n辆车的到达时间以及发车间隔时间,小Serval在m时刻到达,求他最早可以上哪班车。
题目分析
遍历n辆车,若第 i 辆车的最早到达时间小于m,则根据发车间隔时间计算在m时刻之后最早的一班车的时间,否则该车的最早到达时间就是m时刻后最早的一班车。计算每辆车m时刻后最早班车与m的差值,差值最小的车次就是答案。
代码
#include<bits/stdc++.h>
#define ll long long
using namespace std;
int num[100100];
int main()
{
int n,t;
cin>>n>>t;
int time=10010000,ans=1;
for(int i=0;i<n;i++){
int a,b;
cin>>a>>b;
if(a==t){
time=0;
ans=i+1;
}
else if(a<t&&time>a+((t-a+b-1)/b)*b-t){
time=a+((t-a+b-1)/b)*b-t;
//cout<<time<<endl;
ans=i+1;
}
else if(a>t&&time>a-t){
time=a-t;
ans=i+1;
}
}
cout<<ans<<endl;
return 0;
}