ランクSの文字列収集の問題をJavaで短いコードでやってみる
このランクSの問題、他の問題に比べて簡単な気がします
それにしても Java には Pair みたいのがないので Map.Entry を強引に使うしか手が思いつかなかった...
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] pq = Arrays.stream(sc.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();
List<Map.Entry<String, Integer>> pis = new ArrayList<>();
for (int i = 0; i < pq[0]; i++) {
String[] pi = sc.nextLine().split(" ");
pis.add(new AbstractMap.SimpleEntry<>(pi[0], Integer.parseInt(pi[1])));
}
for (int i = 0; i < pq[1]; i++) {
String q = sc.nextLine();
System.out.println(pis.stream().filter(e -> e.getKey().startsWith(q)).mapToInt(e -> e.getValue()).sum());
}
}
}