| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 1363880 | altern23 | 캥거루 (CEOI16_kangaroo) | C++20 | 0 ms | 344 KiB |
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int MAXN = 2000;
const int MOD = 1e9+7;
ll dp[MAXN+5][MAXN+5][3];
int main() {
ios_base::sync_with_stdio(0); cin.tie(0);
int tc = 1;
// cin >> tc;
while (tc--) {
ll N, S, T; cin >> N >> S >> T;
dp[0][0][0] = 1;
for (int i = 1; i <= N; i++) {
for (int j = 1; j <= i; j++) {
for (int k = 0; k <= 2; k++) {
bool z = (i == S || i == T);
if (k-z >= 0) {
// make new cc
dp[i][j][k] += dp[i-1][j-1][k-z]*(z ? 1LL : j-z)%MOD;
dp[i][j][k] %= MOD;
if (!z) {
// gabung 2 cc
dp[i][j][k] += dp[i-1][j+1][k-z]*(z ? 1LL : j)%MOD;
dp[i][j][k] %= MOD;
}
// tambah di ujung, tp ga nambah cc
if (z) {
dp[i][j][k] += dp[i-1][j][k-z]%MOD;
dp[i][j][k] %= MOD;
}
}
}
}
}
cout << dp[N][1][2] << "\n";
}
}
/*
*/| # | 결과 | 실행 시간 | 메모리 | 채점기 출력 |
|---|---|---|---|---|
| 결과를 불러오는 중입니다… | ||||
| # | 결과 | 실행 시간 | 메모리 | 채점기 출력 |
|---|---|---|---|---|
| 결과를 불러오는 중입니다… | ||||
| # | 결과 | 실행 시간 | 메모리 | 채점기 출력 |
|---|---|---|---|---|
| 결과를 불러오는 중입니다… | ||||
| # | 결과 | 실행 시간 | 메모리 | 채점기 출력 |
|---|---|---|---|---|
| 결과를 불러오는 중입니다… | ||||
