import java.util.Arrays; public class AndersonSearch extends SumSearch { @Override protected int search(long[] l, long[] m) { int found = 0; Arrays.sort(l); Arrays.sort(m); for (int i = 0; i < l.length; i++) { long a = l[i]; int k = 0; for (int j = i; j < l.length; j++) { long b = l[j]; long sum = a + b; while ((k < m.length) && (sum > m[k])) { ++k; } if (k == m.length) break; if (sum == m[k]) ++found; } } return found; } @Override public String toString() { return getClass().getName(); } }