/* package whatever; // don't place package name! */
import java.util.*;
import java.io.*;
/* DO NOT CHANGE ANYTHING ABOVE THIS LINE */
/* You may add any imports here, if you wish, but only from the
standard library */
/* Do not add a namespace declaration */
public class Main {
public static Map
<String,Integer
> processData
(ArrayList
<String
> array
) { Map
<String,Integer
> retVal
= new HashMap
<String,Integer
>(); //Result Map Map
<String,Integer
> map
= new HashMap
<String,Integer
>(); //Intermediate Map To Store Subjects and Marks for(int i=0;i<array.size();++i)
{
boolean flag1 = false, flag2 = false ;
String id
="" , subject
="", marks
=""; for(int j=0;j<input.length();++j) //Parsing The Input
{
if(flag2){
marks= marks+input.charAt(j);
continue;
}
if(!flag1){
if(input.charAt(j)=='|')
flag1 = true;
else
id=id+input.charAt(j);
}
else if(flag1){
if(input.charAt(j)=='|')
flag2 = true;
else
subject=subject+input.charAt(j);
}
}
int Marks
= Integer.
parseInt(marks
); if(map.get(subject)==null){
map.
put(subject,
new Integer(Marks
)); retVal.
put(subject,
new Integer(id
)); }
else{
int m = map.get(subject);
if(Marks>m){
map.
put(subject,
new Integer(Marks
)); retVal.
put(subject,
new Integer(id
)); }
}
}
return retVal;
}
public static void main
(String[] args
) {
ArrayList<String> inputData = new ArrayList<String>();
try {
while(in.hasNextLine())
inputData.add(in.nextLine());
Map
<String,Integer
> retVal
= processData
(inputData
); for(Map.
Entry<String,Integer
> e
: retVal.
entrySet()) output.println(e.getKey() + ": " + e.getValue());
output.close();
System.
out.
println("IO error in input.txt or output.txt"); }
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5pby4qOwoKLyogRE8gTk9UIENIQU5HRSBBTllUSElORyBBQk9WRSBUSElTIExJTkUgKi8KLyogWW91IG1heSBhZGQgYW55IGltcG9ydHMgaGVyZSwgaWYgeW91IHdpc2gsIGJ1dCBvbmx5IGZyb20gdGhlIAogICBzdGFuZGFyZCBsaWJyYXJ5ICovCgovKiBEbyBub3QgYWRkIGEgbmFtZXNwYWNlIGRlY2xhcmF0aW9uICovCnB1YmxpYyBjbGFzcyBNYWluIHsKICAgIHB1YmxpYyBzdGF0aWMgTWFwPFN0cmluZyxJbnRlZ2VyPiBwcm9jZXNzRGF0YShBcnJheUxpc3Q8U3RyaW5nPiBhcnJheSkgewoJTWFwPFN0cmluZyxJbnRlZ2VyPiByZXRWYWwgPSBuZXcgSGFzaE1hcDxTdHJpbmcsSW50ZWdlcj4oKTsgLy9SZXN1bHQgTWFwCglNYXA8U3RyaW5nLEludGVnZXI+IG1hcCA9IG5ldyBIYXNoTWFwPFN0cmluZyxJbnRlZ2VyPigpOyAgIC8vSW50ZXJtZWRpYXRlIE1hcCBUbyBTdG9yZSBTdWJqZWN0cyBhbmQgTWFya3MKICAgICAgICBmb3IoaW50IGk9MDtpPGFycmF5LnNpemUoKTsrK2kpCgkJewoJCQlTdHJpbmcgaW5wdXQgPSBhcnJheS5nZXQoaSk7CgkJCVN5c3RlbS5vdXQucHJpbnRsbihpbnB1dCk7CgkJCWJvb2xlYW4gZmxhZzEgID0gZmFsc2UsIGZsYWcyID0gZmFsc2UgOwoJCQlTdHJpbmcgaWQ9IiIgLCBzdWJqZWN0PSIiLCBtYXJrcz0iIjsKCQkJZm9yKGludCBqPTA7ajxpbnB1dC5sZW5ndGgoKTsrK2opICAgIC8vUGFyc2luZyBUaGUgSW5wdXQKCQkJewoJCQkJaWYoZmxhZzIpewoJCQkJCW1hcmtzPSBtYXJrcytpbnB1dC5jaGFyQXQoaik7CgkJCQljb250aW51ZTsJCgkJCQl9CgkJCQlpZighZmxhZzEpewoJCQkJCWlmKGlucHV0LmNoYXJBdChqKT09J3wnKQoJCQkJCQlmbGFnMSA9IHRydWU7CgkJCQkJZWxzZQoJCQkJCQlpZD1pZCtpbnB1dC5jaGFyQXQoaik7CgkJCQoJCQkJfQoJCQkJZWxzZSBpZihmbGFnMSl7CgkJCQkJCWlmKGlucHV0LmNoYXJBdChqKT09J3wnKQoJCQkJCQlmbGFnMiA9IHRydWU7CgkJCQkJZWxzZQoJCQkJCQlzdWJqZWN0PXN1YmplY3QraW5wdXQuY2hhckF0KGopOwoJCQkJfQoJCQkJCgkJCQkKCQkJCQoJCQl9CgkJCWludCBJZCA9IEludGVnZXIucGFyc2VJbnQoaWQpOwoJCQlpbnQgTWFya3MgPSBJbnRlZ2VyLnBhcnNlSW50KG1hcmtzKTsKCQkJaWYobWFwLmdldChzdWJqZWN0KT09bnVsbCl7CgkJCQltYXAucHV0KHN1YmplY3QsbmV3IEludGVnZXIoTWFya3MpKTsKCQkJCXJldFZhbC5wdXQoc3ViamVjdCxuZXcgSW50ZWdlcihpZCkpOwoJCQl9CgkJCWVsc2V7CgkJCQlpbnQgbSA9IG1hcC5nZXQoc3ViamVjdCk7CgkJCQlpZihNYXJrcz5tKXsKCQkJCW1hcC5wdXQoc3ViamVjdCxuZXcgSW50ZWdlcihNYXJrcykpOwoJCQkJcmV0VmFsLnB1dChzdWJqZWN0LG5ldyBJbnRlZ2VyKGlkKSk7CgkJCQl9CgkJCQkKCQkJfQoJCQkKCQl9CQoJCQkKICAgICAgIHJldHVybiByZXRWYWw7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpIHsKICAgICAgICAKICAgICAgICBBcnJheUxpc3Q8U3RyaW5nPiBpbnB1dERhdGEgPSBuZXcgQXJyYXlMaXN0PFN0cmluZz4oKTsKICAgICAgICBTdHJpbmcgbGluZTsKICAgICAgICB0cnkgewogICAgICAgICAgICBTY2FubmVyIGluID0gbmV3IFNjYW5uZXIobmV3IEJ1ZmZlcmVkUmVhZGVyKG5ldyBGaWxlUmVhZGVyKCJpbnB1dC50eHQiKSkpOwogICAgICAgICAgICB3aGlsZShpbi5oYXNOZXh0TGluZSgpKQogICAgICAgICAgICAgICAgaW5wdXREYXRhLmFkZChpbi5uZXh0TGluZSgpKTsKICAgICAgICAgICAgTWFwPFN0cmluZyxJbnRlZ2VyPiByZXRWYWwgPSBwcm9jZXNzRGF0YShpbnB1dERhdGEpOwogICAgICAgICAgICBQcmludFdyaXRlciBvdXRwdXQgPSBuZXcgUHJpbnRXcml0ZXIobmV3IEJ1ZmZlcmVkV3JpdGVyKG5ldyBGaWxlV3JpdGVyKCJvdXRwdXQudHh0IikpKTsKICAgICAgICAgICAgZm9yKE1hcC5FbnRyeTxTdHJpbmcsSW50ZWdlcj4gZTogcmV0VmFsLmVudHJ5U2V0KCkpCiAgICAgICAgICAgICAgICBvdXRwdXQucHJpbnRsbihlLmdldEtleSgpICsgIjogIiArIGUuZ2V0VmFsdWUoKSk7CiAgICAgICAgICAgIG91dHB1dC5jbG9zZSgpOwogICAgICAgIH0gY2F0Y2ggKElPRXhjZXB0aW9uIGUpIHsKICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJJTyBlcnJvciBpbiBpbnB1dC50eHQgb3Igb3V0cHV0LnR4dCIpOwogICAgICAgIH0KICAgICAgICAgICAKICAgICAgIAogICAgfQp9