Untitled
unknown
java
3 years ago
2.1 kB
9
Indexable
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int m = scanner.nextInt();
int n = scanner.nextInt();
int[] machineSpeed = new int[m];
int[] w = new int[m];
for (int i = 0; i < m; i++) {
machineSpeed[i] = scanner.nextInt();
w[i] = machineSpeed[i];
}
ArrayList<Integer> tasks = new ArrayList<>();
for (int i = 0; i < n; i++) {
tasks.add(scanner.nextInt());
}
Comparator<Integer> cmp = Collections.reverseOrder();
Collections.sort(tasks, cmp);
HashMap<Integer, ArrayList<Double>> machines = new HashMap<>();
for (int i = 0; i < m; i++) {
machines.put(i, new ArrayList<>());
}
ArrayList<Double> tmpArray = new ArrayList<>();
int wMin = Integer.MAX_VALUE;
double toAdd = 0;
int counter = 0;
for (int i = 0; i < n; i++) {
wMin = Integer.MAX_VALUE;
for (int j = 0; j < m; j++) {
if (w[j] < wMin) {
wMin = w[j];
counter = j;
}
}
tmpArray = machines.get(counter);
toAdd = (double) tasks.get(i) * machineSpeed[counter];
tmpArray.add(toAdd);
machines.put(counter, new ArrayList<>(tmpArray));
tmpArray.clear();
w[counter] += machineSpeed[counter];
}
int result = 0;
ArrayList<Integer> resultList = new ArrayList<>();
for (int i = 0; i < m; i++) {
tmpArray = machines.get(i);
result = 0;
for (int j = 0; j < tmpArray.size(); j++) {
result += tmpArray.get(tmpArray.size() - j - 1);
resultList.add(result);
}
}
int sum = resultList.stream().mapToInt(Integer::intValue).sum();
System.out.println(sum);
}
}Editor is loading...