招商银行FinTech训练营研发赛道编程题第一题题解
4133
2021.04.29
2021.04.29
发布于 未知归属地
/**
 * @author BuggerKing
 * @date 2021/4/29
 */
import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner sc =new Scanner(System.in);
        int n=sc.nextInt();
        int[] stu=new int[n];
        int[] car=new int[n];
        for(int i=0;i<n;i++){
            stu[i]=sc.nextInt();
        }
        for(int i=0;i<n;i++){
            car[i]=sc.nextInt();
        }
        Arrays.sort(stu);
        Arrays.sort(car);
        long ans=1;
        int cnt=0;
        for(int i=n-1;i>=0;i--){
            int m=right_bound(car,stu[i]);
            ans=ans*(n-m-cnt)%100000007;
            cnt++;
        }
        System.out.println(ans);
    }
    public static int right_bound(int[] nums, int target) {
        if (nums.length == 0){
            return -1;
        }
        int left = 0;
        int right = nums.length;

        while (left < right) {
            int mid = (left + right) / 2;
            if (nums[mid]>=target) {
                right = mid;
            }else{
                left = mid + 1;
            }
        }
        return left;
    }
}
评论 (5)