Untitled
unknown
plain_text
a year ago
2.4 kB
9
Indexable
import java.util.*;
public class TrainingSchedule {
public static int findMinDays(List<Integer> training1, List<Integer> training2, List<int[]> commitments) {
int maxTime = 0;
int days = 0;
// Calculate the maximum possible time required for training
for (int i = 0; i < training1.size(); i++) {
maxTime += Math.max(training1.get(i), training2.get(i));
}
while (days <= maxTime) {
int totalTime = 0;
boolean isValidSchedule = true;
// Check if the current day falls within any commitment period
for (int i = 0; i < commitments.size(); i++) {
int[] commitment = commitments.get(i);
if (commitment[0] <= days && days <= commitment[1]) {
isValidSchedule = false;
break;
}
}
if (isValidSchedule) {
int j = 0;
for (; j < training1.size(); j++) {
totalTime += Math.max(training1.get(j), training2.get(j));
if (days <= totalTime) {
break;
}
}
if (j == training1.size()) {
return days;
}
}
days++;
}
return -1;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int m = scanner.nextInt();
List<Integer> training1 = new ArrayList<>();
List<Integer> training2 = new ArrayList<>();
for (int i = 0; i < m; i++) {
int time = scanner.nextInt();
training1.add(time);
}
for (int i = 0; i < m; i++) {
int time = scanner.nextInt();
training2.add(time);
}
int p = scanner.nextInt();
List<int[]> commitments = new ArrayList<>();
for (int i = 0; i < p; i++) {
int startTime = scanner.nextInt();
int endTime = scanner.nextInt();
commitments.add(new int[]{startTime, endTime});
}
int minDays = findMinDays(training1, training2, commitments);
System.out.println(minDays);
scanner.close();
}
}Editor is loading...
Leave a Comment