Submission #123615
Source Code Expand
// compile with "g++ XXX.cc -mno-cygwin -O2" in Cygwin #include<iostream> #include<sstream> #include<cstdio> #include<cstring> #include<algorithm> #include<string> #include<vector> #include<cmath> #include<set> #include<map> #include<stack> #include<queue> #include<numeric> #include<functional> #include<complex> #include<bitset> #include<cassert> using namespace std; #define BET(a,b,c) ((a)<=(b)&&(b)<(c)) #define FOR(i,n) for(int i=0,i##_end=(int(n));i<i##_end;i++) #define FOR3(i,a,b) for(int i=a,i##_end=b;i<i##_end;i++) #define FOR_EACH(it,v) for(__typeof(v.begin()) it=v.begin(),it_end=v.end() ; it != it_end ; it++) #define SZ(x) (int)(x.size()) #define ALL(x) (x).begin(),(x).end() #define MP make_pair #define CLS(x,val) memset((x) , val , sizeof(x)) typedef long long ll_t; typedef long double ld_t; typedef vector<int> VI; typedef vector<VI> VVI; typedef complex<int> xy_t; template<typename T> void debug(T v , string delimiter = "\n") { for(__typeof(v.begin()) it=v.begin(),it_end=v.end() ; it != it_end ; it++) cout << *it << delimiter; cout << flush ;} int dx[] = {0,1,0,-1}; int dy[] = {1,0,-1,0}; string ds = "SENW"; const double PI = 4.0*atan(1.0); const int mod = 1000000000 + 7; long long choose[1000][1000]; int main() { FOR(i,1000) FOR(j,1000) { if(i < j) choose[i][j] = 0; else { if(i == j || j == 0) { choose[i][j] = 1; }else { choose[i][j] = (choose[i-1][j-1] + choose[i-1][j]) % mod; } } } long long W,H,X,Y,D,L; cin>>W>>H>>X>>Y>>D>>L; long long ans = 0; int all = D + L; long long placePattern = (W - X + 1) * (H - Y + 1) % mod; long long pre = 0 ; long long dp2[1000]; for(int y = 1; y <= Y ; y++){ long long dp[100][1000]; memset(dp , 0 , sizeof(dp)); dp[0][all] = 1; FOR(i,X) { for(int j=0;j<=all;j++) { for(int k=0;k<=j;k++) { int placed = j - k; if(i == 0 && placed == 0) continue; if(placed > y) continue; if(i == X - 1 && placed == 0) continue; dp[i+1][k] += dp[i][j] * choose[y][placed]; dp[i+1][k] %= mod; } } //FOR(j,all+1) cout<<" "<<dp[i+1][j]; cout<<endl; } long long pattern = dp[X][0] ; long long just = pattern; for(int y2=1;y2<y;y2++){ just -= (dp2[y2] * (y - y2 + 1)) % mod; just = (just + mod) % mod; } dp2[y] = just; pre += pattern; pre %= mod; if(y == Y){ ans += just; ans %= mod; } } ans = (ans * placePattern) % mod; ans = (ans * choose[all][D]) % mod; cout<<ans<<endl; return 0 ; }
Submission Info
Submission Time | |
---|---|
Task | D - AtCoder社の冬 |
User | EmK |
Language | C++ (G++ 4.6.4) |
Score | 101 |
Code Size | 2719 Byte |
Status | AC |
Exec Time | 658 ms |
Memory | 9496 KB |
Judge Result
Set Name | sub | All | ||||
---|---|---|---|---|---|---|
Score / Max Score | 100 / 100 | 1 / 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 | 41 ms | 9384 KB |
00_sample_02E.txt | AC | 42 ms | 9384 KB |
00_sample_03E.txt | AC | 52 ms | 9380 KB |
00_sample_04.txt | AC | 87 ms | 9316 KB |
test_01.txt | AC | 43 ms | 9384 KB |
test_02.txt | AC | 41 ms | 9384 KB |
test_03E.txt | AC | 42 ms | 9372 KB |
test_04E.txt | AC | 102 ms | 9376 KB |
test_05.txt | AC | 42 ms | 9320 KB |
test_06.txt | AC | 61 ms | 9332 KB |
test_07E.txt | AC | 42 ms | 9380 KB |
test_08E.txt | AC | 52 ms | 9336 KB |
test_09.txt | AC | 44 ms | 9380 KB |
test_10.txt | AC | 51 ms | 9384 KB |
test_11E.txt | AC | 49 ms | 9376 KB |
test_12E.txt | AC | 90 ms | 9376 KB |
test_13.txt | AC | 42 ms | 9388 KB |
test_14.txt | AC | 619 ms | 9496 KB |
test_15E.txt | AC | 125 ms | 9380 KB |
test_16E.txt | AC | 655 ms | 9312 KB |
test_17.txt | AC | 43 ms | 9316 KB |
test_18.txt | AC | 43 ms | 9336 KB |
test_19E.txt | AC | 40 ms | 9316 KB |
test_20E.txt | AC | 43 ms | 9312 KB |
test_21.txt | AC | 42 ms | 9376 KB |
test_22.txt | AC | 71 ms | 9392 KB |
test_23E.txt | AC | 40 ms | 9368 KB |
test_24E.txt | AC | 289 ms | 9380 KB |
test_25.txt | AC | 46 ms | 9368 KB |
test_26.txt | AC | 45 ms | 9388 KB |
test_27E.txt | AC | 93 ms | 9308 KB |
test_28E.txt | AC | 191 ms | 9380 KB |
test_29.txt | AC | 66 ms | 9380 KB |
test_30.txt | AC | 122 ms | 9388 KB |
test_31E.txt | AC | 52 ms | 9388 KB |
test_32E.txt | AC | 658 ms | 9380 KB |
test_33.txt | AC | 42 ms | 9388 KB |
test_34.txt | AC | 43 ms | 9376 KB |
test_35.txt | AC | 41 ms | 9316 KB |
test_36E.txt | AC | 42 ms | 9380 KB |
test_37E.txt | AC | 41 ms | 9372 KB |
test_38E.txt | AC | 42 ms | 9372 KB |
test_39E.txt | AC | 42 ms | 9328 KB |
test_40.txt | AC | 43 ms | 9376 KB |
test_41.txt | AC | 42 ms | 9384 KB |
test_42.txt | AC | 40 ms | 9380 KB |
test_43.txt | AC | 42 ms | 9368 KB |
test_44.txt | AC | 44 ms | 9380 KB |
test_45E.txt | AC | 42 ms | 9384 KB |
test_46.txt | AC | 42 ms | 9376 KB |
test_47E.txt | AC | 42 ms | 9312 KB |
test_48.txt | AC | 42 ms | 9384 KB |