답안 #1090157

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1090157 2024-09-17T21:02:11 Z lucascgar A Huge Tower (CEOI10_tower) C++17
100 / 100
107 ms 11348 KB
#include <bits/stdc++.h>

// #pragma GCC optimize("Ofast,unroll-loops")
// #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")

using namespace std;

/*
não posso ter queda maior que d
p todo numero "colocar em cima"
*/

mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count()); // overclock random

typedef pair<int,int> pii;
typedef pair<long long, long long> pll;
typedef pair<long double, long double> pdd;

const int MAXN = 2e5+10, MOD=1e9+9;



signed main(){
    std::ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
    // freopen("test.in", "r", stdin);
    // freopen("test.out", "w", stdout);
    // cout << fixed << setprecision(12);

    long long n, d;
    cin >> n >> d;
    vector<long long> a(n);
    for (int i=0;i<n;i++){
        cin >> a[i];
    }

    sort(a.begin(),a.end());

    long long ans = 1;
    for (int i=1;i<n;i++){
        int in = 0,fi=i,me;
        while (in<=fi){
            me = (in+fi)/2;

            if (a[i]-a[me]<=d) fi=me-1;
            else in = me+1;
        }
        ans = ans*(i-(fi+1)+1LL)%MOD;
    }

    cout << ans << '\n';

    return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 468 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 344 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 344 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 472 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 8 ms 1116 KB Output is correct
2 Correct 9 ms 1116 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 41 ms 4700 KB Output is correct
2 Correct 44 ms 4824 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 88 ms 11348 KB Output is correct
2 Correct 107 ms 10576 KB Output is correct