結果
問題 | 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;}}