結果

問題 No.628 Tagの勢い
ユーザー uwi
提出日時 2018-01-05 21:26:38
言語 Java8
(openjdk 1.8.0.191)
結果
AC  
実行時間 285 ms
コード長 3,702 Byte
コンパイル時間 3,716 ms
使用メモリ 26,076 KB
最終ジャッジ日時 2019-02-24 16:46:58

テストケース

テストケース表示
入力 結果 実行時間
使用メモリ
test1.txt AC 260 ms
25,252 KB
test2.txt AC 264 ms
25,252 KB
test3.txt AC 259 ms
25,220 KB
test4.txt AC 266 ms
25,272 KB
test5.txt AC 263 ms
25,240 KB
test6.txt AC 260 ms
25,240 KB
test7.txt AC 262 ms
25,232 KB
test8.txt AC 262 ms
25,252 KB
test9.txt AC 265 ms
25,280 KB
test10.txt AC 264 ms
25,256 KB
test11.txt AC 266 ms
25,312 KB
test12.txt AC 266 ms
25,268 KB
test13.txt AC 271 ms
26,076 KB
test14.txt AC 273 ms
26,052 KB
test15.txt AC 277 ms
26,060 KB
test16.txt AC 285 ms
26,032 KB
test17.txt AC 271 ms
25,504 KB
test18.txt AC 269 ms
25,256 KB
test19.txt AC 260 ms
25,252 KB
テストケース一括ダウンロード

ソースコード

diff #
package contest180105;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.InputMismatchException;
import java.util.List;
import java.util.Map;

public class B {
	InputStream is;
	PrintWriter out;
	String INPUT = "";
	
	void solve()
	{
		Map<String, Integer> map = new HashMap<>();
		for(int T = ni();T > 0;T--){
			int n = ni();
			int m = ni(), s = ni();
			String[] ss = new String[m];
			for(int i = 0;i < m;i++){
				ss[i] = ns();
				map.merge(ss[i], s, Integer::sum);
			}
		}
		List<Map.Entry<String, Integer>> es = new ArrayList<>(map.entrySet());
		es.sort((x, y) -> {
			if(!x.getValue().equals(y.getValue()))return -(x.getValue() - y.getValue());
			return x.getKey().compareTo(y.getKey());
		});
		for(int i = 0;i < 10 && i < es.size();i++){
			out.println(es.get(i).getKey() + " " + es.get(i).getValue());
		}
	}
	
	void run() throws Exception
	{
		is = INPUT.isEmpty() ? System.in : new ByteArrayInputStream(INPUT.getBytes());
		out = new PrintWriter(System.out);
		
		long s = System.currentTimeMillis();
		solve();
		out.flush();
		if(!INPUT.isEmpty())tr(System.currentTimeMillis()-s+"ms");
//		Thread t = new Thread(null, null, "~", Runtime.getRuntime().maxMemory()){
//			@Override
//			public void run() {
//				long s = System.currentTimeMillis();
//				solve();
//				out.flush();
//				if(!INPUT.isEmpty())tr(System.currentTimeMillis()-s+"ms");
//			}
//		};
//		t.start();
//		t.join();
	}
	
	public static void main(String[] args) throws Exception { new B().run(); }
	
	private byte[] inbuf = new byte[1024];
	public int lenbuf = 0, ptrbuf = 0;
	
	private int readByte()
	{
		if(lenbuf == -1)throw new InputMismatchException();
		if(ptrbuf >= lenbuf){
			ptrbuf = 0;
			try { lenbuf = is.read(inbuf); } catch (IOException e) { throw new InputMismatchException(); }
			if(lenbuf <= 0)return -1;
		}
		return inbuf[ptrbuf++];
	}
	
	private boolean isSpaceChar(int c) { return !(c >= 33 && c <= 126); }
	private int skip() { int b; while((b = readByte()) != -1 && isSpaceChar(b)); return b; }
	
	private double nd() { return Double.parseDouble(ns()); }
	private char nc() { return (char)skip(); }
	
	private String ns()
	{
		int b = skip();
		StringBuilder sb = new StringBuilder();
		while(!(isSpaceChar(b))){ // when nextLine, (isSpaceChar(b) && b != ' ')
			sb.appendCodePoint(b);
			b = readByte();
		}
		return sb.toString();
	}
	
	private char[] ns(int n)
	{
		char[] buf = new char[n];
		int b = skip(), p = 0;
		while(p < n && !(isSpaceChar(b))){
			buf[p++] = (char)b;
			b = readByte();
		}
		return n == p ? buf : Arrays.copyOf(buf, p);
	}
	
	private int[] na(int n)
	{
		int[] a = new int[n];
		for(int i = 0;i < n;i++)a[i] = ni();
		return a;
	}
	
	private long[] nal(int n)
	{
		long[] a = new long[n];
		for(int i = 0;i < n;i++)a[i] = nl();
		return a;
	}
	
	private char[][] nm(int n, int m) {
		char[][] map = new char[n][];
		for(int i = 0;i < n;i++)map[i] = ns(m);
		return map;
	}
	
	private int[][] nmi(int n, int m) {
		int[][] map = new int[n][];
		for(int i = 0;i < n;i++)map[i] = na(m);
		return map;
	}
	
	private int ni() { return (int)nl(); }
	
	private long nl()
	{
		long num = 0;
		int b;
		boolean minus = false;
		while((b = readByte()) != -1 && !((b >= '0' && b <= '9') || b == '-'));
		if(b == '-'){
			minus = true;
			b = readByte();
		}
		
		while(true){
			if(b >= '0' && b <= '9'){
				num = num * 10 + (b - '0');
			}else{
				return minus ? -num : num;
			}
			b = readByte();
		}
	}
	
	private static void tr(Object... o) { System.out.println(Arrays.deepToString(o)); }
}
0