結果
| 問題 | No.3391 Line up Dominoes |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2026-02-23 19:54:35 |
| 言語 | C++23 (gcc 15.2.0 + boost 1.89.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 976 bytes |
| 記録 | |
| コンパイル時間 | 1,759 ms |
| コンパイル使用メモリ | 166,888 KB |
| 実行使用メモリ | 7,844 KB |
| 最終ジャッジ日時 | 2026-02-23 19:54:50 |
| 合計ジャッジ時間 | 11,513 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 5 WA * 18 |
ソースコード
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
constexpr int mod = 998244353;
short N, M; int K;
int A[10000];
short l[10000], r[10000];
int dp[10000], dpsum[10000];
int main(void) {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
scanf("%hd%hd%d", &N, &M, &K);
for(short i = 0; i < N; ++i) scanf("%d", &A[i]);
sort(A, A + N);
for(short i = 0; i < N; ++i) l[i] = lower_bound(A, A + N, A[i] - K) - A, r[i] = upper_bound(A, A + N, A[i] + K) - A;
for(short i = 0; i < N; ++i) dp[i] = 1;
for(short _ = 1; _ < M; ++_) {
memset(dpsum, 0, sizeof(dpsum));
for(int i = 0; i < N; ++i) {
dpsum[i + 1] = dpsum[i] + dp[i];
if(dpsum[i + 1] >= mod) dpsum[i + 1] -= mod;
}
for(int i = 0; i < N; ++i) {
dp[i] = dpsum[r[i]] - dpsum[l[i]];
if(dp[i] < 0) dp[i] += mod;
}
}
int ans = 0;
for(short i = 0; i < N; ++i) {
ans += dp[i];
if(ans >= mod) ans -= mod;
}
cout << ans << "\n";
return 0;
}