結果
| 問題 | No.1885 Flat Permutation | 
| コンテスト | |
| ユーザー |  miscalc | 
| 提出日時 | 2021-11-13 16:22:31 | 
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 3 ms / 2,000 ms | 
| コード長 | 578 bytes | 
| コンパイル時間 | 2,006 ms | 
| コンパイル使用メモリ | 196,416 KB | 
| 最終ジャッジ日時 | 2025-01-25 17:43:30 | 
| ジャッジサーバーID (参考情報) | judge4 / judge2 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 4 | 
| other | AC * 43 | 
ソースコード
#include <bits/stdc++.h>
using namespace std;
#include <atcoder/modint>
using namespace atcoder;
using mint = modint998244353;
mint sub(int D)
{
  vector<mint> dp(D + 1, 0);
  dp.at(0) = 1;
  for (int i = 0; i < D; i++)
  {
    dp.at(i + 1) += dp.at(i);
    if (i + 3 <= D)
      dp.at(i + 3) += dp.at(i);
  }
  return dp.at(D);
}
int main()
{
  int N, X, Y;
  cin >> N >> X >> Y;
  if (X > Y)
    swap(X, Y);
  int X0 = X + (X == 1 ? 0 : 1);
  int Y0 = Y - (Y == N ? 0 : 1);
  int D = Y0 - X0;
  if (D < 0)
    cout << 0 << endl;
  else
    cout << sub(D).val() << endl;
}
            
            
            
        