제출 #1285615

#제출 시각아이디문제언어결과실행 시간메모리
1285615tarek4241Garage (IOI09_garage)Java
0 / 100
75 ms20336 KiB
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 timeMemoryGrader output
Fetching results...