classSolution{public:vector<int>kthSmallestPrimeFraction(vector<int>&A,intK){constintn=A.size();doublel=0.0;doubler=1.0;while(l<r){constdoublem=(l+r)/2.0;intfractionsNoGreaterThanM=0;intp=0;intq=1;// For each index i, find the first index j s.t. A[i] / A[j] <= m,// So fractionsNoGreaterThanM for index i will be n - jfor(inti=0,j=1;i<n;++i){while(j<n&&A[i]>m*A[j])++j;if(j==n)break;fractionsNoGreaterThanM+=n-j;if(p*A[j]<q*A[i]){p=A[i];q=A[j];}}if(fractionsNoGreaterThanM==K)return{p,q};if(fractionsNoGreaterThanM>K)r=m;elsel=m;}throw;}};
classSolution{publicint[]kthSmallestPrimeFraction(int[]A,intK){finalintn=A.length;doublel=0.0;doubler=1.0;while(l<r){finaldoublem=(l+r)/2.0;intfractionsNoGreaterThanM=0;intp=0;intq=1;// For each index i, find the first index j s.t. A[i] / A[j] <= m,// So fractionsNoGreaterThanM for index i will be n - jfor(inti=0,j=1;i<n;++i){while(j<n&&A[i]>m*A[j])++j;if(j==n)break;fractionsNoGreaterThanM+=n-j;if(p*A[j]<q*A[i]){p=A[i];q=A[j];}}if(fractionsNoGreaterThanM==K)returnnewint[]{p,q};if(fractionsNoGreaterThanM>K)r=m;elsel=m;}thrownewIllegalArgumentException();}}