Skip to content

Instantly share code, notes, and snippets.

@chermehdi
Created September 17, 2016 18:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save chermehdi/0e8f535e03ac8729443a4ea14e2fb9ea to your computer and use it in GitHub Desktop.
Save chermehdi/0e8f535e03ac8729443a4ea14e2fb9ea to your computer and use it in GitHub Desktop.
/**
* @Author Mehdi Maick
* Created on 17/09/2016.
*/
import java.util.*;
import java.io.*;
public class RollCal {
static class Name implements Comparable<Name> {
String firstName, lastName;
public Name(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
@Override
public int compareTo(Name o) {
if (o.lastName.equals(lastName)) {
return firstName.compareTo(o.firstName);
}
return lastName.compareTo(o.lastName);
}
}
public static void solve(FastReader fs, PrintWriter pw) {
String[] data;
String line;
ArrayList<Name> list = new ArrayList<>();
Map<String, Integer> map = new HashMap<>();
while ((line = fs.nextLine()) != null) {
data = line.split(" ");
list.add(new Name(data[0], data[1]));
if (map.get(data[0]) == null) {
map.put(data[0], 1);
} else {
int i = map.get(data[0]);
map.put(data[0], i + 1);
}
}
list.sort(null);
for (Name n : list) {
if (map.get(n.firstName) == 1) {
pw.println(n.firstName);
} else {
pw.println(n.firstName + " " + n.lastName);
}
}
}
public static void main(String[] args) throws Exception {
FastReader fs = new FastReader(System.in);
PrintWriter pw = new PrintWriter(new OutputStreamWriter(System.out));
solve(fs, pw);
fs.close();
pw.close();
}
static class FastReader {
BufferedReader reader;
StringTokenizer st;
FastReader(InputStream stream) {
reader = new BufferedReader(new InputStreamReader(stream));
st = null;
}
String next() {
while (st == null || !st.hasMoreTokens()) {
try {
String line = reader.readLine();
if (line == null) {
return null;
}
st = new StringTokenizer(line);
} catch (Exception e) {
throw new RuntimeException();
}
}
return st.nextToken();
}
String nextLine() {
String s = null;
try {
s = reader.readLine();
} catch (IOException e) {
e.printStackTrace();
}
return s;
}
int nextInt() {
return Integer.parseInt(next());
}
long nextLong() {
return Long.parseLong(next());
}
double nextDouble() {
return Double.parseDouble(next());
}
char nextChar() {
return next().charAt(0);
}
int[] nextIntArray(int n) {
int[] arr = new int[n];
int i = 0;
while (i < n) {
arr[i++] = nextInt();
}
return arr;
}
long[] nextLongArray(int n) {
long[] arr = new long[n];
int i = 0;
while (i < n) {
arr[i++] = nextLong();
}
return arr;
}
int[] nextIntArrayOneBased(int n) {
int[] arr = new int[n + 1];
int i = 1;
while (i <= n) {
arr[i++] = nextInt();
}
return arr;
}
long[] nextLongArrayOneBased(int n) {
long[] arr = new long[n + 1];
int i = 1;
while (i <= n) {
arr[i++] = nextLong();
}
return arr;
}
void close() {
try {
reader.close();
} catch (IOException e) {
System.err.println("There's been an error trying closing the reader ");
e.printStackTrace();
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment