每个输入包含一个测试用例。
每个测试用例的第一行包含一个正整数,表示闹钟的数量N(N<=100)。
接下来的N行每行包含两个整数,表示这个闹钟响起的时间为Hi(0<=A<24)时Mi(0<=B<60)分。
接下来的一行包含一个整数,表示从起床算起他需要X(0<=X<=100)分钟到达教室。
接下来的一行包含两个整数,表示上课时间为A(0<=A<24)时B(0<=B<60)分。
数据保证至少有一个闹钟可以让牛牛及时到达教室。
输出两个整数表示牛牛最晚起床时间。
3 5 0 6 0 7 0 59 6 59
6 0
#include <iostream> using namespace std; const int N = 110; int n, a[N], b, c, x, y, ans; int main() { cin >> n; for (int i = 0; i < n; i++) { cin >> x >> y; a[i] = x * 60 + y; } cin >> b >> x >> y; c = x * 60 + y; for (int i = 0; i < n; i++) if (a[i] + b <= c && a[i] > ans) ans = a[i]; cout << ans / 60 << ' ' << ans % 60; return 0; }
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int count = Integer.valueOf(in.nextLine().replace(" ",""));
List<Integer> timeslist = new ArrayList(count);
while(count--!=0){
int h = in.nextInt();
int m = in.nextInt();
int min = h*60+m;
timeslist.add(min);
}
int to_school_time = in.nextInt();
int h = in.nextInt();
int m = in.nextInt();
int lean_time = h*60+m;
int last_time = lean_time - to_school_time;
int max = 0;
for(int t : timeslist){
if(t<=last_time && t>=max){
max = t;
}
}
int h_last = max/60;
int m_last = max%60;
System.out.println(h_last+" "+m_last);
}
}
import java.util.*; public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int N = scan.nextInt(); int []total=new int[N]; for (int i = 0; i < N; i++) { // alarms.add(new Alarm(scan.nextInt(), scan.nextInt())); total[i]=scan.nextInt()*60+ scan.nextInt(); } int X = scan.nextInt(); int A = scan.nextInt(), B = scan.nextInt(); int time = (A * 60 + B) - X; int max=0; for (int i = 0; i < N; i++) { if (total[i]<=time&&total[i]>max){ max=total[i]; } } System.out.println(max/60 + " " + max%60); } }
import operator numofclock = int(input()) clocks = [] for i in range(numofclock): imp = input().split() clocks.append((int(imp[0]),int(imp[1]))) clocks = sorted(clocks, key= operator.itemgetter(0, 1),reverse=True) cost = int(input()) ddl = input().split() # print(clocks, cost, ddl) for t in clocks: nm = (int(t[1]) + cost) % 60 nh = (int(t[0]) + ((int(t[1]) + cost) // 60)) if nh < int(ddl[0]) or (nh == int(ddl[0]) and nm <= int(ddl[1])): print(t[0],t[1]) break
1.输入处理的时候,类型要一并处理了,不然排序的时候会出现问题
# coding:utf-8
# python3.5
# 处理输入数据
clocks = int(input())
arr = []
for i in range(clocks):
tmp = input().split()
line = list(map(int, tmp))
arr.append(line[0]*60+line[1])
tArrive = int(input())
tClassList = list(map(int, input().split()))
tClass = tClassList[0]*60 + tClassList[1]
result = 0
# 遍历数组,如遇到满足时间约束且比当前结果更大的数则更新结果
for i in range(0, len(arr)):
if arr[i] + tArrive <= tClass and arr[i] > result:
result = arr[i]
hour = result // 60
mins = result % 60
print(hour, mins)
#include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { int n = 0; while(cin >> n) { vector<int> vec; vec.reserve(n); for(int i = 0; i < n; ++i) { int hour = 0,min = 0; cin >> hour >> min; auto to_min = 60 * hour + min; vec.emplace_back(to_min); } sort(vec.begin(),vec.end()); int onRoad = 0; cin>>onRoad; int start_hour = 0,start_min = 0; cin >> start_hour >> start_min; auto to_start_min = 60 * start_hour + start_min; int i = vec.size(); for(auto itor = vec.crbegin(); itor != vec.crend(); ++itor) { --i; if(*itor <= to_start_min - onRoad) break; } auto theone = vec[i]; auto h = theone / 60; auto m = theone - 60 * h; cout<<h<<' '<<m<<endl; } }