#include<bits/stdc++.h> using namespace std; const int mod=1e9+7; const int N=1e6+5; int bit[N]; int a[N],b[N]; int n; long long sum(int x) { long long res=bit[x]; while(x>0) { x-=x&-x; res+=bit[x]; } res+=bit[0]; return res; } void add(int i,int x) { if(i==0) bit[0]+=x; else while(i<=N) { bit[i]+=x; i+=i&-i; } } int main() { cin>>n; for(int i=0;i<n;i++) { cin>>a[i]; add(a[i],1); } for(int i=0;i<n;i++) cin>>b[i]; sort(b,b+n); long long res=1; for(int i=0;i<n;i++) { long long t=(sum(b[i])-i)%mod; // printf("%d %lld\n",b[i],t); res=(res*t)%mod; } cout<<res; } //D题,我认为可以用树状数组维护 小于或等于Bi的Ai个数。但是通过率80%!
点赞 评论

相关推荐

05-01 22:41
中南大学 Java
点赞 评论 收藏
分享
牛客网
牛客企业服务