Submission #1138392

#TimeUsernameProblemLanguageResultExecution timeMemory
1138392mrsmartypantsJob Scheduling (CEOI12_jobs)Java
0 / 100
56 ms11372 KiB
import java.io.*; import java.util.*; class Main { static ArrayList<ArrayList<Integer>> schedule = new ArrayList<>(); static int N, D, M; public static void main(String... args) throws IOException { // BufferedReader reader = new BufferedReader(new FileReader("input.in")); BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); PrintWriter writer = new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out))); StringTokenizer st = new StringTokenizer(reader.readLine()); N = Integer.parseInt(st.nextToken()); D = Integer.parseInt(st.nextToken()); M = Integer.parseInt(st.nextToken()); st = new StringTokenizer(reader.readLine()); Request[] jobs = new Request[M]; for (int i = 0; i < M; i++) { jobs[i] = new Request(i + 1, Integer.parseInt(st.nextToken())); } Arrays.sort(jobs, Comparator.comparingInt(j -> j.day)); int lo = 1; int hi = M + 1; while (lo < hi) { int mid = lo + (hi - lo) / 2; Return r = test(mid, jobs); if (r.worked) { hi = mid; schedule = r.schedule; } else { lo = mid + 1; } } writer.println(lo); for (int i = 0; i < N; i++) { for (int idx : schedule.get(i)) writer.print(idx + " "); writer.println(0); } writer.close(); } static Return test(int numMachines, Request[] jobs) { ArrayList<ArrayList<Integer>> schedule = new ArrayList<>(); for (int i = 0; i < N ;i++)schedule.add(new ArrayList<>()); int reqNum = 0; for (int day = 1; day <= N; day++) { for (int j = 0; j < numMachines; j++) { if (jobs[reqNum].day > day) break; if (jobs[reqNum].day + D >= day) { schedule.get(day - 1).add(jobs[reqNum++].id); } else { return new Return(false, schedule); } if (reqNum == M) return new Return(true, schedule); } } return new Return(false, schedule); } static class Return { boolean worked; ArrayList<ArrayList<Integer>> schedule; public Return(boolean worked, ArrayList<ArrayList<Integer>> schedule) { this.worked = worked; this.schedule = schedule; } } static class Request { int id; int day; public Request(int id, int day) { this.id = id; this.day = day; } } }
#Verdict Execution timeMemoryGrader output
Fetching results...