package com.interview.flag.g;
import com.interview.basics.sort.QuickSorter;
import com.interview.basics.sort.Sorter;
import com.interview.utils.ConsoleWriter;
/**
* Created_By: stefanie
* Date: 15-1-18
* Time: 下午1:31
*/
public class G11_TaskAssignment {
static Sorter<Task> SORTER = new QuickSorter<Task>();
static class Task implements Comparable<Task> {
int number;
Integer request;
Integer output;
Task(int number, Integer request, Integer output) {
this.number = number;
this.request = request;
this.output = output;
}
@Override
public int compareTo(Task task) {
if(output == task.output){
return request.compareTo(task.request);
} else return output.compareTo(task.output);
}
}
public static int[] assign(int available, int[] request, int[] output) {
Task[] tasks = new Task[request.length];
for (int i = 0; i < request.length; i++) tasks[i] = new Task(i, request[i], output[i]);
SORTER.sort(tasks);
int[] seq = new int[request.length];
for (int i = 0; i < tasks.length; i++) {
if (available < tasks[i].request) return new int[0];
seq[i] = tasks[i].number;
available -= tasks[i].output;
}
return seq;
}
public static void main(String[] args){
G11_TaskAssignment assignment = new G11_TaskAssignment();
int[] request = new int[]{8, 10};
int[] output = new int[]{6, 5};
int[] seq = assignment.assign(14, request, output);
ConsoleWriter.printIntArray(seq);//1, 0
}
}