import java.io.*;
import java.util.*;
 class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        int N = Integer.parseInt(st.nextToken());
        int M = Integer.parseInt(st.nextToken());
        PriorityQueue<Integer> freeSpaces = new PriorityQueue<>();
        int[] rate = new int[N + 1];
        int[] weight = new int[M + 1];
        Map<Integer, Integer> parkedAt = new HashMap<>();
        Queue<Integer> waiting = new LinkedList<>();
        for (int i = 1; i <= N; i++) {
            rate[i] = Integer.parseInt(br.readLine().trim());
            freeSpaces.add(i);
        }
        for (int i = 1; i <= M; i++) {
            weight[i] = Integer.parseInt(br.readLine().trim());
        }
        long total = 0;
        for (int i = 0; i < 2 * M; i++) {
            int event = Integer.parseInt(br.readLine().trim());
            if (event > 0) { 
                if (!freeSpaces.isEmpty()) {
                    int space = freeSpaces.poll();
                    parkedAt.put(event, space);
                    total += (long) rate[space] * weight[event];
                } else {
                    waiting.add(event); 
                }
            } else { 
                int car = -event;
                int space = parkedAt.remove(car);
                if (!waiting.isEmpty()) {
                    int nextCar = waiting.poll();
                    parkedAt.put(nextCar, space);
                    total += (long) rate[space] * weight[nextCar];
                } else {
                    freeSpaces.add(space);
                }
            }
        }
        System.out.println(total);
    }
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |