結果
| 問題 |
No.2625 Bouns Ai
|
| コンテスト | |
| ユーザー |
kokosei
|
| 提出日時 | 2024-02-09 22:04:33 |
| 言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 16 ms / 2,000 ms |
| コード長 | 1,345 bytes |
| コンパイル時間 | 2,671 ms |
| コンパイル使用メモリ | 250,384 KB |
| 実行使用メモリ | 6,820 KB |
| 最終ジャッジ日時 | 2024-09-28 15:18:07 |
| 合計ジャッジ時間 | 3,749 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 23 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
#include <bits/stdc++.h>
#include <atcoder/modint>
using namespace std;
using mint = atcoder::modint998244353;
class FPC{
private:
int size;
vector<mint> ff, fi;
public:
FPC(int _n = 0) : size(_n), ff(_n + 1), fi(_n + 1){
ff[0] = fi[0] = 1;
for(int i = 1;i <= size;i++){
ff[i] = ff[i - 1] * i;
fi[i] = ff[i].inv();
}
}
mint fact(int n) const{
assert(0 <= n && n <= size);
return ff[n];
}
mint faci(int n) const{
assert(0 <= n && n <= size);
return fi[n];
}
mint parm(int n, int r) const{
assert(0 <= n && n <= size);
assert(0 <= r && r <= size);
return ff[n] * fi[r];
}
mint comb(int n, int r) const{
assert(0 <= n && n <= size);
assert(0 <= r && r <= size);
assert(n >= r);
return ff[n] * fi[r] * fi[n - r];
}
};
int N;
int A[210];
int main(void){
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> N;
for(int i = 0;i < N;i++)cin >> A[i];
int n = (int)1e5 + 1;
for(int i = 0;i < N;i++){
n -= max(0, A[i] - A[i + 1]);
}
FPC fpc(n + N);
mint ans = (n < 1 ? 0 : fpc.comb(n + N - 1, N));
cout << ans.val() << endl;
return 0;
}
kokosei