結果
問題 | No.447 ゆきこーだーの雨と雪 (2) |
ユーザー |
![]() |
提出日時 | 2022-10-14 13:04:22 |
言語 | Java (openjdk 23) |
結果 |
AC
|
実行時間 | 169 ms / 2,000 ms |
コード長 | 2,893 bytes |
コンパイル時間 | 2,529 ms |
コンパイル使用メモリ | 80,232 KB |
実行使用メモリ | 42,904 KB |
最終ジャッジ日時 | 2024-06-26 12:35:58 |
合計ジャッジ時間 | 7,557 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 25 |
ソースコード
import java.io.*;import java.util.*;public class Main {public static void main(String[] args) throws Exception {Scanner sc = new Scanner();int n = sc.nextInt();int[] levels = new int[n];for (int i = 0; i < n; i++) {levels[i] = sc.nextInt();}int[] ranks = new int[n];int t = sc.nextInt();HashMap<String, Player> players = new HashMap<>();Player.size = n;for (int i = 0; i < t; i++) {String name = sc.next();int idx = sc.next().charAt(0) - 'A';ranks[idx]++;if (!players.containsKey(name)) {players.put(name, new Player(name));}players.get(name).addScore(idx, 50 * levels[idx] + 500 * levels[idx] / (8 + 2 * ranks[idx]), i);}ArrayList<Player> ans = new ArrayList<>();ans.addAll(players.values());Collections.sort(ans);StringBuilder sb = new StringBuilder();for (int i = 0; i < ans.size(); i++) {sb.append(i + 1).append(" ").append(ans.get(i)).append("\n");}System.out.print(sb);}static class Player implements Comparable<Player> {static int size;String name;int[] scores;int sum;int last;public Player(String name) {this.name = name;scores = new int[size];}public void addScore(int idx, int value, int time) {scores[idx] = value;sum += value;last = time;}public int compareTo(Player another) {if (sum == another.sum) {return last - another.last;} else {return another.sum - sum;}}public String toString() {StringBuilder sb = new StringBuilder();sb.append(name).append(" ");for (int x : scores) {sb.append(x).append(" ");}sb.append(sum);return sb.toString();}}}class Scanner {BufferedReader br = new BufferedReader(new InputStreamReader(System.in));StringTokenizer st = new StringTokenizer("");StringBuilder sb = new StringBuilder();public Scanner() throws Exception {}public int nextInt() throws Exception {return Integer.parseInt(next());}public long nextLong() throws Exception {return Long.parseLong(next());}public double nextDouble() throws Exception {return Double.parseDouble(next());}public String next() throws Exception {while (!st.hasMoreTokens()) {st = new StringTokenizer(br.readLine());}return st.nextToken();}}