結果

問題 No.447 ゆきこーだーの雨と雪 (2)
ユーザー fal_rndfal_rnd
提出日時 2016-11-18 23:49:59
言語 Java21
(openjdk 21)
結果
WA  
実行時間 -
コード長 1,668 bytes
コンパイル時間 2,185 ms
コンパイル使用メモリ 87,128 KB
実行使用メモリ 68,236 KB
最終ジャッジ日時 2024-05-04 19:02:21
合計ジャッジ時間 18,348 ms
ジャッジサーバーID
(参考情報)
judge4 / judge1
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 115 ms
53,904 KB
testcase_01 WA -
testcase_02 AC 114 ms
54,060 KB
testcase_03 WA -
testcase_04 WA -
testcase_05 WA -
testcase_06 WA -
testcase_07 WA -
testcase_08 WA -
testcase_09 WA -
testcase_10 WA -
testcase_11 WA -
testcase_12 WA -
testcase_13 WA -
testcase_14 WA -
testcase_15 WA -
testcase_16 WA -
testcase_17 WA -
testcase_18 WA -
testcase_19 WA -
testcase_20 WA -
testcase_21 WA -
testcase_22 WA -
testcase_23 WA -
testcase_24 WA -
testcase_25 WA -
testcase_26 WA -
testcase_27 WA -
権限があれば一括ダウンロードができます

ソースコード

diff #

import java.util.*;
class B{
	static Scanner s = new Scanner(System.in);
	public static void main(String[] args) {
		int[] levels = new int[s.nextInt()],
		      passed = new int[levels.length];
		LinkedList<user> m = new LinkedList<>();
		for (int i = 0; i < levels.length; i++) {
			levels[i]=s.nextInt();
		}
		s.next();
		while(s.hasNext()) {
			String name = s.next();
			int no = s.next().charAt(0)-'A';
			passed[no]++;
			user u = new user(name);
			if(m.contains(u)) {
				m.add(m.get(m.indexOf(u)).addScore(no, getScore(levels[no], passed[no])));
				m.remove(u);
			}else {
				m.add(new user(name,levels.length).addScore(no, getScore(levels[no], passed[no])));
			}
		}
		Collections.sort(m);

		for(int i=m.size()-1;i>=0;--i) {
			user v = m.get(i);
			System.out.printf("%d %s ",m.size()-i,v.name);
			for(int sc:v.score) {
				System.out.printf("%d ",sc);
			}
			System.out.printf("%d\n",v.scoreSum);
		}
	}
	static int getScore(int level, int th) {
		return level*50+(int)(50.0*level/(0.2*th+0.8));
	}

}
class user implements Comparable<user>{
	String name;
	int[] score;
	int scoreSum=0;
	public user(String name,int pros) {
		this.name=name;
		score = new int[pros];
	}
	public user(String name) {
		this(name,1);
	}
	public user addScore(int no,int score) {
		this.score[no]+=score;
		scoreSum+=score;
		return this;
	}
	@Override
	public boolean equals(Object obj) {
		return this.name.equals(((user)obj).name);
	}
	@Override
	public int compareTo(user o) {
		return this.scoreSum-o.scoreSum;
	}
	@Override
	public String toString() {
		return "user [name=" + name + ", score=" + Arrays.toString(score)
				+ ", scoreSum=" + scoreSum + "]";
	}

}
0