Submission #7511627
Source Code Expand
#include <bits/stdc++.h> using namespace std; # define REP(i,n) for (int i=0;i<(n);++i) # define PER(i,n) for (int i=(N-1);i>=0;--i) # define rep(i,a,b) for(int i=a;i<(b);++i) # define p(s) std::cout << s ; # define pl(s) std::cout << s << endl; # define printIf(j,s1,s2) cout << (j ? s1 : s2) << endl; # define YES(j) cout << (j ? "YES" : "NO") << endl; # define Yes(j) std::cout << (j ? "Yes" : "No") << endl; # define yes(j) std::cout << (j ? "yes" : "no") << endl; # define all(v) v.begin(),v.end() # define showVector(v) REP(i,v.size()){p(v[i]);p(" ")} pl("") template<class T> inline bool chmin(T &a, T b){ if(a > b) { a = b; return true;} return false;} template<class T> inline bool chmax(T &a, T b){ if(a < b) { a = b; return true;} return false;} typedef long long int ll; typedef pair<ll,ll> P_ii; typedef pair<double,double> P_dd; const int MOD = 1000000007; const int inf=1e9+7; const ll longinf=1LL<<60 ; void addM(long long &a, long long b) { a += b; if (a >= MOD) a -= MOD; } void mulM(long long &a, long long b) { a = ((a%MOD)*(b%MOD))%MOD ; } template<class T> vector<T> make_vec(size_t a){ return vector<T>(a); } template<class T, class... Ts> auto make_vec(size_t a, Ts... ts){ return vector<decltype(make_vec<T>(ts...))>(a, make_vec<T>(ts...)); } template<typename T,typename V> typename enable_if<is_class<T>::value==0>::type fill_v(T &t,const V &v){t=v;} template<typename T,typename V> typename enable_if<is_class<T>::value!=0>::type fill_v(T &t,const V &v){ for(auto &e:t) fill_v(e,v); } // テーブルを作る前処理 const int MAX = 510000; 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(ll n, ll k){ if (n < k) return 0; if (n < 0 || k < 0) return 0; return fac[n] * (finv[k] * finv[n - k] % MOD) % MOD; } int main() { COMinit(); int r, c, x, y, d, l; cin >> r >> c >> x >> y >> d >> l; ll sum = 0; for (int i = 0; i < 1 << 4; i++) { int tx = x; int ty = y; if ((i >> 0 & 1)) ty--; if ((i >> 1 & 1)) ty--; if ((i >> 2 & 1)) tx--; if ((i >> 3 & 1)) tx--; if (tx < 0 || ty < 0) continue; int bitcount = 0; REP(j, 4){ if(i >> j & 1) bitcount++; } if (bitcount % 2 == 0) { sum = (sum + COM(tx * ty, d + l) * COM(d + l, d)) % MOD; } else { sum = (sum - COM(tx * ty, d + l) * COM(d + l, d) + MOD) % MOD; } } mulM(sum, (r - x + 1) * (c - y + 1)); cout << sum << endl; return 0; }
Submission Info
Submission Time | |
---|---|
Task | D - AtCoder社の冬 |
User | azz |
Language | C++14 (GCC 5.4.1) |
Score | 100 |
Code Size | 2885 Byte |
Status | WA |
Exec Time | 11 ms |
Memory | 12160 KB |
Judge Result
Set Name | sub | All | ||||||
---|---|---|---|---|---|---|---|---|
Score / Max Score | 100 / 100 | 0 / 1 | ||||||
Status |
|
|
Set Name | Test Cases |
---|---|
sub | 00_sample_01E.txt, 00_sample_02E.txt, 00_sample_03E.txt, test_03E.txt, test_04E.txt, test_07E.txt, test_08E.txt, test_11E.txt, test_12E.txt, test_15E.txt, test_16E.txt, test_19E.txt, test_20E.txt, test_23E.txt, test_24E.txt, test_27E.txt, test_28E.txt, test_31E.txt, test_32E.txt, test_36E.txt, test_37E.txt, test_38E.txt, test_39E.txt, test_45E.txt, test_47E.txt |
All | 00_sample_01E.txt, 00_sample_02E.txt, 00_sample_03E.txt, 00_sample_04.txt, test_01.txt, test_02.txt, test_03E.txt, test_04E.txt, test_05.txt, test_06.txt, test_07E.txt, test_08E.txt, test_09.txt, test_10.txt, test_11E.txt, test_12E.txt, test_13.txt, test_14.txt, test_15E.txt, test_16E.txt, test_17.txt, test_18.txt, test_19E.txt, test_20E.txt, test_21.txt, test_22.txt, test_23E.txt, test_24E.txt, test_25.txt, test_26.txt, test_27E.txt, test_28E.txt, test_29.txt, test_30.txt, test_31E.txt, test_32E.txt, test_33.txt, test_34.txt, test_35.txt, test_36E.txt, test_37E.txt, test_38E.txt, test_39E.txt, test_40.txt, test_41.txt, test_42.txt, test_43.txt, test_44.txt, test_45E.txt, test_46.txt, test_47E.txt, test_48.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
00_sample_01E.txt | AC | 11 ms | 12160 KB |
00_sample_02E.txt | AC | 11 ms | 12160 KB |
00_sample_03E.txt | AC | 11 ms | 12160 KB |
00_sample_04.txt | AC | 11 ms | 12160 KB |
test_01.txt | AC | 11 ms | 12160 KB |
test_02.txt | AC | 11 ms | 12160 KB |
test_03E.txt | AC | 11 ms | 12160 KB |
test_04E.txt | AC | 10 ms | 12160 KB |
test_05.txt | AC | 11 ms | 12160 KB |
test_06.txt | AC | 11 ms | 12160 KB |
test_07E.txt | AC | 11 ms | 12160 KB |
test_08E.txt | AC | 11 ms | 12160 KB |
test_09.txt | AC | 11 ms | 12160 KB |
test_10.txt | AC | 11 ms | 12160 KB |
test_11E.txt | AC | 11 ms | 12160 KB |
test_12E.txt | AC | 11 ms | 12160 KB |
test_13.txt | AC | 11 ms | 12160 KB |
test_14.txt | AC | 11 ms | 12160 KB |
test_15E.txt | AC | 11 ms | 12160 KB |
test_16E.txt | AC | 11 ms | 12160 KB |
test_17.txt | AC | 11 ms | 12160 KB |
test_18.txt | AC | 11 ms | 12160 KB |
test_19E.txt | AC | 11 ms | 12160 KB |
test_20E.txt | AC | 11 ms | 12160 KB |
test_21.txt | AC | 11 ms | 12160 KB |
test_22.txt | AC | 11 ms | 12160 KB |
test_23E.txt | AC | 11 ms | 12160 KB |
test_24E.txt | AC | 11 ms | 12160 KB |
test_25.txt | AC | 11 ms | 12160 KB |
test_26.txt | AC | 11 ms | 12160 KB |
test_27E.txt | AC | 11 ms | 12160 KB |
test_28E.txt | AC | 11 ms | 12160 KB |
test_29.txt | AC | 11 ms | 12160 KB |
test_30.txt | AC | 11 ms | 12160 KB |
test_31E.txt | AC | 11 ms | 12160 KB |
test_32E.txt | AC | 11 ms | 12160 KB |
test_33.txt | AC | 11 ms | 12160 KB |
test_34.txt | AC | 11 ms | 12160 KB |
test_35.txt | AC | 11 ms | 12160 KB |
test_36E.txt | AC | 11 ms | 12160 KB |
test_37E.txt | AC | 11 ms | 12160 KB |
test_38E.txt | AC | 11 ms | 12160 KB |
test_39E.txt | AC | 11 ms | 12160 KB |
test_40.txt | WA | 11 ms | 12160 KB |
test_41.txt | AC | 11 ms | 12160 KB |
test_42.txt | WA | 11 ms | 12160 KB |
test_43.txt | AC | 11 ms | 12160 KB |
test_44.txt | AC | 11 ms | 12160 KB |
test_45E.txt | AC | 11 ms | 12160 KB |
test_46.txt | AC | 11 ms | 12160 KB |
test_47E.txt | AC | 11 ms | 12160 KB |
test_48.txt | AC | 11 ms | 12160 KB |