Submission #68259679
Source Code Expand
#include<bits/stdc++.h>
using namespace std;
#define rep(i, s, t) for(int i = (s); i <= (t); i ++)
#define per(i, s, t) for(int i = (s); i >= (t); i --)
template<typename T, typename T2>
inline void chmin(T &x, T2 &&y) { x = min(x, y); }
template<typename T, typename T2>
inline void chmax(T &x, T2 &&y) { x = max(x, y); }
typedef long long ll;
const int N = 4e5 + 5, p = 998244353;
int fac[N], ifac[N];
ll qpow(ll a, ll b)
{
if(!b) return 1;
return ((b & 1) ? a : 1ll) * qpow(a * a % p, b >> 1) % p;
}
void init()
{
fac[0] = ifac[0] = 1;
for(int i = 1; i < N; i ++) fac[i] = 1ll * fac[i - 1] * i % p;
ifac[N - 1] = qpow(fac[N - 1], p - 2) % p;
for(int i = N - 2; i >= 1; i --) ifac[i] = 1ll * ifac[i + 1] * (i + 1) % p;
}
ll C(ll a, ll b)
{
if(a < b || a < 0 || b < 0) return 0;
return 1ll * fac[a] * ifac[b] % p * ifac[a - b] % p;
}
ll S(ll al, ll ar, ll b)
{
return (C(ar + 1, b + 1) - C(al, b + 1) + p) % p;
}
void solve()
{
int n, m, k; cin >> n >> m >> k;
if(k < n + m - 2) return cout << 0 << "\n", void();
if(k == n + m - 2) return cout << C(n + m - 2, n - 1) << "\n", void();
int s = (1ll * n * (m - 1) + 1ll * m * (n - 1) - (n + m - 2)) % p;
if(k == n + m - 1) return cout << C(n + m - 2, n - 1) * s % p << "\n", void();
int ans = C(n + m - 2, n - 1) * (1ll * s * (s - 1) / 2 % p) % p;
// cerr << ans << endl;
ans = (ans - C(n + m - 4, n - 2) * (n + m - 3)) % p;
// cerr << ans << endl;
// rep(i, 1, n - 1) ans = (ans + C(m + n - 2 - i, m) * (m - 1)) % p;
// rep(i, 1, m - 1) ans = (ans + C(m + n - 2 - i, n) * (n - 1)) % p;
ans = (ans + S(m + n - 2 - (n - 1), m + n - 2 - 1, m) * (m - 1)) % p;
ans = (ans + S(m + n - 2 - (m - 1), m + n - 2 - 1, n) * (n - 1)) % p;
cout << (ans + p) % p << "\n";
}
signed main()
{
init();
ios::sync_with_stdio(0);cin.tie(0);
int t;cin >> t;while(t --) solve();
return 0;
}
Submission Info
Submission Time |
|
Task |
C - Destruction of Walls |
User |
adam01 |
Language |
C++ 20 (gcc 12.2) |
Score |
600 |
Code Size |
1999 Byte |
Status |
AC |
Exec Time |
58 ms |
Memory |
6712 KiB |
Judge Result
Set Name |
Sample |
All |
Score / Max Score |
0 / 0 |
600 / 600 |
Status |
|
|
Set Name |
Test Cases |
Sample |
sample.txt |
All |
handmade.txt, random_1.txt, random_2.txt, random_3.txt, random_4.txt, random_5.txt, sample.txt |
Case Name |
Status |
Exec Time |
Memory |
handmade.txt |
AC |
45 ms |
6512 KiB |
random_1.txt |
AC |
32 ms |
6636 KiB |
random_2.txt |
AC |
40 ms |
6640 KiB |
random_3.txt |
AC |
25 ms |
6540 KiB |
random_4.txt |
AC |
6 ms |
6624 KiB |
random_5.txt |
AC |
58 ms |
6712 KiB |
sample.txt |
AC |
6 ms |
6564 KiB |