数学 hnu 12256 Rabbit Playing Game

来源:互联网 发布:广发华福软件 编辑:程序博客网 时间:2024/04/30 11:07


http://acm.hnu.cn/online/?action=problem&type=show&id=12256


#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;

/*

排序后,则a[i]可以放在a[p](i>p>=0)的前面,累乘即可了

*/
/*
尼玛的这题太坑爹了,说是N<=10000,让俺作死的RE了个多小时有意思么啊,显然N还要更大额~~~~~~~~~~~~
*/
const int MAX=1000000007;
int main()
{
    int a[100001],i,far=0,j,n,t;
    __int64 res=1;
    scanf("%d%d",&n,&t);
    for(i=0;i<n;++i)
        scanf("%d",&a[i]);
    if(n==1)
        return 1;
    sort(a,a+n);
    for(i=1;i<n;++i)
    {

/*

经指点,这完全没必要if else,当时真是傻了
        if(a[i]-a[far]<=t)
            for(j=far;j>=0&&a[i]-a[j]<=t;--j);
        else
            for(j=far+1;a[i]-a[j]>t;++j);
        if(j<=far)
            far=j+1;
        else
            far=j;

*/

for(j=far;a[i]-a[j]>t;++j);

             far=j;
        res=(i-far+1)*res%MAX;
    }
    printf("%d\n",res);
    return 0;
}
/*
3 1
1
2
3


5 7
9
9
9
1
5




*/