Submission #1138434

#TimeUsernameProblemLanguageResultExecution timeMemory
1138434mrsmartypantsJob Scheduling (CEOI12_jobs)Java
0 / 100
1099 ms131072 KiB
import java.io.*; import java.util.*; public class jobs { 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)); // System.out.println(Arrays.toString(jobs)); int lo = 1; int hi = M; while (lo < hi) { int mid = lo + (hi - lo) / 2; try { Return r = test(mid, jobs); if (r.worked) { hi = mid; schedule = r.schedule; } else { lo = mid + 1; } } catch (RuntimeException e) { System.out.println(Arrays.toString(e.getStackTrace())); } } System.out.println(lo); for (ArrayList<Integer> ds : schedule) { for (int z : ds) { System.out.print(z + " "); } System.out.println(0); } } 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); reqNum++; } 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; } @Override public String toString() { return "Request{" + "id=" + id + ", day=" + day + '}'; } } }
#Verdict Execution timeMemoryGrader output
Fetching results...