CF 1153A Serval and Bus

题目链接

我是题目链接戳我呀>_<

题面

在这里插入图片描述
在这里插入图片描述

题目大意

给出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;
}

猜你喜欢

转载自blog.csdn.net/qq_36711868/article/details/89684749