bzoj2013

来源:互联网 发布:查询域名注册信息 编辑:程序博客网 时间:2024/05/22 12:34

按照长度排序
f[i] 前i个元素的排列方式
考虑对于前i-1的元素的排列,第i个元素可以插入的合法位置为x
f[i]=f[i1]x
在排好序的序列中二分找可以插入的位置满足a[i]<=a[k]+D

#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#define maxn 620005#define mod 1000000009#define LL long longusing namespace std;int n,D;LL  ans;int a[maxn];int main(){    scanf("%d%d",&n,&D);    for(int i=1;i<=n;i++) scanf("%d",&a[i]);    sort(a+1,a+n+1);    ans=1;    int t;    for(int i=2;i<=n;i++){        t=lower_bound(a+1,a+i+1,a[i]-D)-a;        t=(i-t+1);        ans=(ans*1ll*t)%mod;    }    printf("%lld\n",ans%mod);    return 0;}
原创粉丝点击