제출 #412792

#제출 시각아이디문제언어결과실행 시간메모리
412792rqiA Huge Tower (CEOI10_tower)C++14
100 / 100
141 ms8684 KiB
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef pair<int, int> pi;

#define mp make_pair
#define f first
#define s second
#define pb push_back

#define all(x) begin(x), end(x)

const int MOD = 1e9+9;

#include <ext/pb_ds/assoc_container.hpp>
using namespace __gnu_pbds;

template<class T> using Tree = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;

struct mi{
	ll v;
	mi(){
		v = 0;
	}
	mi(ll _v){
		v = _v % MOD;
		if(v < 0) v+=MOD;
	}
};

mi operator*(mi a, mi b){
	a.v = (a.v*b.v) % MOD;
	return a;
}

mi& operator*=(mi& a, mi b){
	a = a*b;
	return a;
}

const int mx = 5000005;
int build[mx];

int main(){
	cin.tie(0)->sync_with_stdio(0);
	int N, D;
	cin >> N >> D;
	for(int i = 1; i <= N; i++){
		cin >> build[i];
	}
	sort(build+1, build+1+N);
	int cur_j = 1;
	mi ans = mi(1);
	for(int i = 1; i <= N; i++){
		while(true){
			if(build[cur_j]+D < build[i]){
				cur_j++;
			}
			else{
				break;
			}
		}
		ans*=mi(i-cur_j+1);
	}
	cout << ans.v << "\n";
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...