Submission #675342

#TimeUsernameProblemLanguageResultExecution timeMemory
675342wisePigOnTheMoonJob Scheduling (CEOI12_jobs)Java
40 / 100
1096 ms55744 KiB
import java.util.*; import java.io.*; public class jobs { static class Job implements Comparable<Job> { public int id, day; public Job(int i, int d) { id = i; day = d; } public int compareTo(Job o) { return this.day - o.day; } } public static void main(String[] args) throws Exception { Kattio in = new Kattio(); int days = in.nextInt(); int d = in.nextInt(); int m = in.nextInt(); Job[] jobs = new Job[m]; for (int i = 0; i < m; i++) { int assign = in.nextInt(); jobs[i] = new Job(i + 1, assign); } Arrays.sort(jobs); int l = 0; int r = m; while (l < r) { int mid = (l + r)/2; if (checkValid(mid, days, d, m, jobs)) { r = mid; } else { l = mid + 1; } } System.out.println(l); printer(l, days, d, m, jobs); } public static boolean checkValid(int macs, int days, int d, int m, Job[] jobs) { int i = 0; int count = 1; while (count <= days && i < m) { int work = 0; while (work < macs && i < m) { if (jobs[i].day > count) { break; } if (count > jobs[i].day + d) { return false; } work++; i++; } count++; } if (i < m) { return false; } return true; } public static void printer(int macs, int days, int d, int m, Job[] jobs) { StringBuilder sb = new StringBuilder(); int i = 0; int count = 1; while (count <= days && i < m) { int work = 0; while (work < macs && i < m) { if (jobs[i].day > count) { break; } sb.append(jobs[i].id); sb.append(" "); work++; i++; } count++; sb.append("0\n"); } while (count <= days) { sb.append("0\n"); count++; } System.out.println(sb); } static class Kattio extends PrintWriter {//Kattio private BufferedReader r; private StringTokenizer st; // standard input public Kattio() { this(System.in, System.out); } public Kattio(InputStream i, OutputStream o) { super(o); r = new BufferedReader(new InputStreamReader(i)); } // USACO-style file input public Kattio(String problemName) throws IOException { super(problemName + ".out"); r = new BufferedReader(new FileReader(problemName + ".in")); } // returns null if no more input public String next() { try { while (st == null || !st.hasMoreTokens()) st = new StringTokenizer(r.readLine()); return st.nextToken(); } catch (Exception e) { } return null; } public int nextInt() { return Integer.parseInt(next()); } public double nextDouble() { return Double.parseDouble(next()); } public long nextLong() { return Long.parseLong(next()); } } }
#Verdict Execution timeMemoryGrader output
Fetching results...