| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
为什么是RE呀?求指教!谢谢!import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
public class Main {
private static final int LEN = 100010;
public static void main(String[] args) throws FileNotFoundException {
Scanner cin = new Scanner(System.in);
while (cin.hasNext()) {
List<String> dictList = read(cin);
List<Node> nodeList = new ArrayList<Node>(LEN);
for (int i = 0, size = dictList.size(); i < size; i++) {
String[] str = dictList.get(i).split(" ");
Node node = new Node(str[0], str[1]);
nodeList.add(node);
}
Collections.sort(nodeList);
List<String> foreignList = read(cin);
for (int i = 0, size = foreignList.size(); i < size; i++) {
int index = binarySearch(nodeList, foreignList.get(i));
if (index == -1) {
System.out.println("eh");
} else {
System.out.println(nodeList.get(index).getWord());
}
}
}
}
private static int binarySearch(List<Node> nodeList, String key) {
int left = 0, right = nodeList.size() - 1;
while (left < right) {
int mid = (left + right) >> 1;
String foreign = nodeList.get(mid).getForeign();
int index = foreign.compareTo(key);
if (index == 0) {
return mid;
} else if (index > 0) {
right = mid - 1;
} else {
left = mid + 1;
}
}
return -1;
}
private static List<String> read(Scanner cin) {
List<String> list = new ArrayList<String>(LEN);
String str = cin.nextLine();
while (str.length() != 0) {
list.add(str);
str = cin.nextLine();
}
return list;
}
}
class Node implements Comparable<Node> {
private String word;
private String foreign;
public String getWord() {
return word;
}
public void setWord(String word) {
this.word = word;
}
public String getForeign() {
return foreign;
}
public Node(String word, String foreign) {
super();
this.word = word;
this.foreign = foreign;
}
public void setForeign(String foreign) {
this.foreign = foreign;
}
@Override
public int compareTo(Node o) {
int index = this.getForeign().compareTo(o.getForeign());
if (index > 0) {
return 1;
} else if (index < 0) {
return -1;
} else {
return 0;
}
}
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator