题解:
找出与目标时间相差最下的时间即可(不能为负数)
代码如下:
#include<stdio.h>
#include<iostream>
#include<vector>
#include<math.h>
#define INF 0x3f3f3f3f
using namespace std;
struct timer{
int h,m;
timer(int hh,int mm){
h=hh;
m=mm;
}
};
vector<timer> vec;
int main(){
int n,h,m,r,lh,lm,minl=INF;
timer res(0,0);
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d%d",&h,&m);
timer t(h,m);
vec.push_back(t);
}
scanf("%d",&r);
scanf("%d%d",&lh,&lm);
for(int i=0;i<n;i++){
int tmp=(lh*60+lm)-(vec[i].h*60+vec[i].m+r);
if(tmp<minl&&tmp>=0){
minl=tmp;
res=vec[i];
}
}
printf("%d %d",res.h,res.m);
return 0;
}