답안 #1024022

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1024022 2024-07-15T10:40:38 Z PanosPask A Huge Tower (CEOI10_tower) C++14
100 / 100
120 ms 10128 KB
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;

const int MOD = 1e9 + 9;

int N, D;
vector<int> a;

// avail[i]: Number of blocks with side length smaller than a[i] and bigger than a[i] + D
vector<int> avail;

// dp[i]: Number of ways to arrange the first i blocks
vector<ll> dp;

int main(void)
{
    scanf("%d %d", &N, &D);

    a.resize(N);
    avail.resize(N);
    dp.resize(N + 1);

    for (int i = 0; i < N; i++) {
        scanf("%d", &a[i]);
    }

    sort(a.begin(), a.end());
    int j = 0;
    for (int i = 0; i < N; i++) {
        while (a[j] + D < a[i]) {
            j++;
        }

        avail[i] = i - j + 1;
    }

    dp[0] = 1;
    for (int i = 0; i < N; i++) {
        dp[i + 1] = dp[i] * avail[i] % MOD;
    }

    printf("%lld\n", dp[N]);

    return 0;
}

Compilation message

tower.cpp: In function 'int main()':
tower.cpp:20:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   20 |     scanf("%d %d", &N, &D);
      |     ~~~~~^~~~~~~~~~~~~~~~~
tower.cpp:27:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   27 |         scanf("%d", &a[i]);
      |         ~~~~~^~~~~~~~~~~~~
# 결과 실행 시간 메모리 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 600 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 344 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 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 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 1 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 9 ms 1368 KB Output is correct
2 Correct 8 ms 1116 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 45 ms 4188 KB Output is correct
2 Correct 41 ms 4344 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 99 ms 10124 KB Output is correct
2 Correct 120 ms 10128 KB Output is correct