Submission #412792

# Submission time Handle Problem Language Result Execution time Memory
412792 2021-05-27T14:15:17 Z rqi A Huge Tower (CEOI10_tower) C++14
100 / 100
141 ms 8684 KB
#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 time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 324 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 320 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 332 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 332 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 3 ms 460 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 12 ms 1036 KB Output is correct
2 Correct 11 ms 972 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 57 ms 3652 KB Output is correct
2 Correct 53 ms 3708 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 117 ms 8684 KB Output is correct
2 Correct 141 ms 8132 KB Output is correct