N^3 log N
public static int FourSumFast(int[] a){Arrays.sort(a);int N = a.length;int cnt = 0;for(int i=0;i<N;i++)for(int j=i+1;j<N;j++)for(int z=j+1;z<N;z++)if(BinarySearch.rank(-a[i]-a[j]-a[z], a) > z)cnt++;return cnt;}
N^3 log N
public static int FourSumFast(int[] a){Arrays.sort(a);int N = a.length;int cnt = 0;for(int i=0;i<N;i++)for(int j=i+1;j<N;j++)for(int z=j+1;z<N;z++)if(BinarySearch.rank(-a[i]-a[j]-a[z], a) > z)cnt++;return cnt;}