結果
問題 |
No.1885 Flat Permutation
|
ユーザー |
![]() |
提出日時 | 2022-03-25 22:12:51 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 7 ms / 2,000 ms |
コード長 | 631 bytes |
コンパイル時間 | 1,766 ms |
コンパイル使用メモリ | 168,088 KB |
実行使用メモリ | 5,248 KB |
最終ジャッジ日時 | 2024-10-14 06:05:45 |
合計ジャッジ時間 | 2,972 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 43 |
ソースコード
#include <bits/stdc++.h> using namespace std; using ll =long long; #define all(v) v.begin(),v.end() #define rep(i,a,b) for(int i=a;i<b;i++) #define rrep(i,a,b) for(int i=a;i>=b;i--) ll mod=998244353; int main() { ll N,X,Y;cin>>N>>X>>Y; if(X>Y) swap(X,Y); if(Y-X==1) { if(X!=1&&Y!=N) { cout<<0<<endl; } else cout<<1<<endl; return 0; } ll K=Y-X+1; vector<ll> dp(K,0); dp[0]=1; for(ll i=1;i<K;i++) { if(i-3>=0) dp[i]+=dp[i-3]; dp[i]+=dp[i-1]; dp[i]%=mod; } if(X==1&&Y==N) { cout<<dp.back()<<endl; } else if(X==1||Y==N) { cout<<dp[K-2]<<endl; } else { cout<<dp[K-3]<<endl; } }