Submission #28021143
Source Code Expand
//g++ 1.cpp -std=c++14 -O2 -I . #include <bits/stdc++.h> using namespace std; #include <atcoder/all> using namespace atcoder; using ll = long long; using ld = long double; using vi = vector<int>; using vvi = vector<vi>; using vll = vector<ll>; using vvll = vector<vll>; using vld = vector<ld>; using vvld = vector<vld>; #define fi first #define se second #define pb push_back #define pq_big(T) priority_queue<T,vector<T>,less<T>> #define pq_small(T) priority_queue<T,vector<T>,greater<T>> #define all(a) a.begin(),a.end() #define rep(i,start,end) for(ll i=start;i<(ll)(end);i++) #define per(i,start,end) for(ll i=start;i>=(ll)(end);i--) #define uniq(a) sort(all(a));a.erase(unique(all(a)),a.end()) const int MAX=1510000; const long long MOD=998244353; long long fac[MAX],finv[MAX],inv[MAX]; void COMinit(){ fac[0]=fac[1]=1; finv[0]=finv[1]=1; inv[1]=1; for(int i=2;i<MAX;i++){ fac[i]=fac[i-1]*i%MOD; inv[i]=MOD-inv[MOD%i]*(MOD/i)%MOD; finv[i]=finv[i-1]*inv[i]%MOD; } } long long COM(int n,int k){ if(n<k) return 0; if(n<0||k<0) return 0; return fac[n]*(finv[k]*finv[n-k]%MOD)%MOD; } using mint = modint998244353; mint dp_h[1000000+10][2]={}; mint dp_w[1000000+10][2]={}; int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); COMinit(); int h,w,k; cin>>h>>w>>k; h%=MOD; w%=MOD; //i回移動j=0 -> 同じとこ j=1 -> 違うとこ dp_h[0][0]=1;dp_h[0][1]=0;dp_h[1][0]=0;dp_h[1][1]=1; dp_w[0][0]=1;dp_w[0][1]=0;dp_w[1][0]=0;dp_w[1][1]=1; rep(i,2,k+10){ /* dp_h[i][0] 1から1 dp_h[i][1] 1から2 */ dp_h[i][0]=dp_h[i-1][1]*(h-1); dp_h[i][1]=dp_h[i-1][0]+dp_h[i-1][1]*(h-2); dp_w[i][0]=dp_w[i-1][1]*(w-1); dp_w[i][1]=dp_w[i-1][0]+dp_w[i-1][1]*(w-2); } int x1,y1,x2,y2; cin>>x1>>y1>>x2>>y2; mint ans=0; rep(i,0,k+1){ mint nw=1; if(x1==x2){ nw*=dp_h[i][0]; } else{ nw*=dp_h[i][1]; } if(y1==y2){ nw*=dp_w[k-i][0]; } else{ nw*=dp_w[k-i][1]; } nw*=COM(k,i); ans+=nw; } cout<<ans.val()<<endl; }
Submission Info
Submission Time | |
---|---|
Task | E - Rook Path |
User | Mitsubachi |
Language | C++ (GCC 9.2.1) |
Score | 500 |
Code Size | 2187 Byte |
Status | AC |
Exec Time | 104 ms |
Memory | 54680 KiB |
Judge Result
Set Name | Sample | All | ||||
---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 500 / 500 | ||||
Status |
|
|
Set Name | Test Cases |
---|---|
Sample | example_00.txt, example_01.txt, example_02.txt |
All | example_00.txt, example_01.txt, example_02.txt, test_00.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
example_00.txt | AC | 95 ms | 54608 KiB |
example_01.txt | AC | 104 ms | 54672 KiB |
example_02.txt | AC | 89 ms | 54516 KiB |
test_00.txt | AC | 98 ms | 54540 KiB |
test_01.txt | AC | 101 ms | 54516 KiB |
test_02.txt | AC | 91 ms | 54580 KiB |
test_03.txt | AC | 87 ms | 54548 KiB |
test_04.txt | AC | 89 ms | 54644 KiB |
test_05.txt | AC | 98 ms | 54572 KiB |
test_06.txt | AC | 87 ms | 54624 KiB |
test_07.txt | AC | 88 ms | 54548 KiB |
test_08.txt | AC | 96 ms | 54676 KiB |
test_09.txt | AC | 93 ms | 54536 KiB |
test_10.txt | AC | 97 ms | 54628 KiB |
test_11.txt | AC | 98 ms | 54516 KiB |
test_12.txt | AC | 85 ms | 54624 KiB |
test_13.txt | AC | 91 ms | 54612 KiB |
test_14.txt | AC | 94 ms | 54620 KiB |
test_15.txt | AC | 91 ms | 54620 KiB |
test_16.txt | AC | 95 ms | 54624 KiB |
test_17.txt | AC | 91 ms | 54676 KiB |
test_18.txt | AC | 89 ms | 54680 KiB |
test_19.txt | AC | 96 ms | 54676 KiB |
test_20.txt | AC | 89 ms | 54540 KiB |
test_21.txt | AC | 95 ms | 54576 KiB |
test_22.txt | AC | 93 ms | 54544 KiB |