백준공부/java
[백준] 4428번 Contest Scoreboard (silver 3
gomduri43
2023. 9. 17. 21:08
import java.io.*;
import java.util.*;
class Point{
int t;
int solve=0;
int time=0;
public Point(int t, int solve, int time){
this.solve=solve;
this.time=time;
this.t=t;
}
}
public class Main{
public static void main(String[] args) throws IOException{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));
HashMap<String,Integer> dict=new HashMap<>();
ArrayList<Point> arr=new ArrayList<>();
String input;
while((input=br.readLine())!=null && !input.isEmpty()){
StringTokenizer st=new StringTokenizer(input);
String tN=st.nextToken();
String problemN=st.nextToken();
int useTime=Integer.valueOf(st.nextToken());
char result=st.nextToken().charAt(0);
if(dict.get(tN.concat("t"))==null){
dict.put(tN.concat("t"), arr.size());
arr.add(new Point(Integer.valueOf(tN),0,0));
}
String pt=problemN.concat(tN);
if(result=='I'){
if(dict.get(pt)==null){
dict.put(pt,20);
}
else if(dict.get(pt)>0){
dict.replace(pt, dict.get(pt)+20);
}
}
else if(result=='C'){
if(dict.get(pt)!=null && dict.get(pt)==-1){
continue;
}
int temp=0;
arr.get(dict.get(tN.concat("t"))).solve++;
arr.get(dict.get(tN.concat("t"))).time+= temp = dict.get(pt)==null ? useTime : dict.get(pt)+useTime;
dict.put(pt,-1);
}
}
Collections.sort(arr, new Comparator<Point>(){
public int compare(Point o1, Point o2){
if(o1.solve==o2.solve){
if(o1.time==o2.time){
return -(o1.t-o2.t);
}
else{
return -(o1.time-o2.time);
}
}
else{
return o1.solve-o2.solve;
}
}
});
for(int i=arr.size()-1; i>=0; i--){
Point answer=arr.get(i);
bw.write(answer.t+" "+answer.solve+" "+answer.time+"\n");
}
bw.flush();
}
}