Untitled

 avatar
unknown
plain_text
a year ago
2.4 kB
5
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