답안 #437750

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
437750 2021-06-27T02:30:41 Z Airy Job Scheduling (CEOI12_jobs) Java 11
0 / 100
201 ms 12456 KB
import java.util.*;

class jobschedule {
    public static Pair [] arr;
    public static int m;
    public static int d;
    public static int n;
    public static int [] times;
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);

        n = s.nextInt();
        d = s.nextInt();
        m = s.nextInt();

        arr = new Pair [m];

        for (int i = 0; i < m; i++) {
            arr[i] = new Pair (s.nextInt(), i + 1);
        }

        Arrays.sort(arr);

        int a = 1, b = m;
        int mid = 1;
        
        while (a < b) {
            mid = (a + b) / 2;

            if (simulate(mid)) {
                b = mid;
            }

            else {
                a = mid + 1;
            }
        }

        if (!simulate(mid)) {
            simulate(mid + 1);
            mid++;
            System.out.println(mid);
        }

        else {
            simulate(mid);
            System.out.println(mid);
        }

        int pos = 0;
        int dayf = 1;
        boolean done = false;

        for (int i = 0; i < n; i++) {
            //System.out.println(pos + mid + "h" + done);
            if (done) {
                System.out.println(0);
                continue;
            }

            if ((pos + mid) >= m) {
                done = true;
            }

            for (int j = pos; j < m; j++) {
                //System.out.println(j + " " + dayf + " " + times[j]);
                if (!(dayf == times[j])) {
                    dayf++;
                    pos = j;
                    break;
                }

                System.out.print(arr[j].index + " ");
            }

            System.out.print(0);

            System.out.println();
        }
    }

    public static boolean simulate (int x) {
        int counter = 1;
        int day = 1;

        times = new int [m];

        for (int i = 0; i < m; i++) {
            times[i] = day;

            counter++;

            if (counter > x) {
                counter = 1;
                day++;
            }
        }

        System.out.println(Arrays.toString(times) + " " + x);

        for (int i = 0; i < m; i++) {
            if (times[i] - arr[i].sorter > d) {
                return false;
            }
        }

        return true;
    }

    private static class Pair implements Comparable<Pair> {
        int sorter;
        int index;

        public Pair(int location, int index) {
            this.sorter = location;
            this.index = index;
        }
        
        @Override
        public int compareTo(Pair o) {
            return sorter - o.sorter;
        }

        @Override
        public boolean equals (Object other) {
            Pair nother = (Pair) other;
            return nother.sorter == sorter;
        }
    }
}
# 결과 실행 시간 메모리 Grader output
1 Runtime error 171 ms 12456 KB Execution failed because the return code was nonzero
2 Runtime error 167 ms 12064 KB Execution failed because the return code was nonzero
3 Runtime error 193 ms 12124 KB Execution failed because the return code was nonzero
4 Runtime error 171 ms 12140 KB Execution failed because the return code was nonzero
5 Runtime error 172 ms 11980 KB Execution failed because the return code was nonzero
6 Runtime error 180 ms 11976 KB Execution failed because the return code was nonzero
7 Runtime error 196 ms 12084 KB Execution failed because the return code was nonzero
8 Runtime error 173 ms 12012 KB Execution failed because the return code was nonzero
9 Runtime error 170 ms 12060 KB Execution failed because the return code was nonzero
10 Runtime error 176 ms 12092 KB Execution failed because the return code was nonzero
11 Runtime error 188 ms 11996 KB Execution failed because the return code was nonzero
12 Runtime error 176 ms 11976 KB Execution failed because the return code was nonzero
13 Runtime error 165 ms 12108 KB Execution failed because the return code was nonzero
14 Runtime error 169 ms 12180 KB Execution failed because the return code was nonzero
15 Runtime error 180 ms 11964 KB Execution failed because the return code was nonzero
16 Runtime error 201 ms 11980 KB Execution failed because the return code was nonzero
17 Runtime error 179 ms 11956 KB Execution failed because the return code was nonzero
18 Runtime error 165 ms 11908 KB Execution failed because the return code was nonzero
19 Runtime error 169 ms 12060 KB Execution failed because the return code was nonzero
20 Runtime error 184 ms 11940 KB Execution failed because the return code was nonzero