Submission #122687
Source Code Expand
#include <stdio.h> #include <string.h> #define MOD_BY 1000000007 #define mulmod(x,y) ((int)(((long long)(x)*(y))%MOD_BY)) int gyakugen(int x) { int pn=MOD_BY-2; int ans=1; int now=x%MOD_BY; while(pn>0) { if(pn&1)ans=((long long)ans*now)%MOD_BY; now=((long long)now*now)%MOD_BY; pn>>=1; } return ans; } int getputterns(int XY,int D,int L) { int ans=1; int i; if(XY<D+L)return 0; for(i=1;i<=XY;i++)ans=mulmod(ans,i); for(i=1;i<=D;i++)ans=mulmod(ans,gyakugen(i)); for(i=1;i<=L;i++)ans=mulmod(ans,gyakugen(i)); for(i=1;i<=XY-D-L;i++)ans=mulmod(ans,gyakugen(i)); return ans; } int memo[32][32]; int getexactputterns(int X,int Y,int D,int L) { int ans=0; int i,j; if(memo[Y][X]>0)return memo[Y][X]-1; ans=getputterns(X*Y,D,L); for(i=1;i<=X;i++) { for(j=1;j<=Y;j++) { int nowminus; if(i==X && j==Y)continue; nowminus=getexactputterns(i,j,D,L); nowminus=mulmod(nowminus,X-i+1); nowminus=mulmod(nowminus,Y-j+1); ans-=nowminus; if(ans<0)ans+=MOD_BY; } } return (memo[Y][X]=ans+1)-1; } int main(void) { int R,C,X,Y,D,L; scanf("%d%d%d%d%d%d",&R,&C,&X,&Y,&D,&L); if(D+L==X*Y) { int ans=1; int now=D+L; int i; for(i=1;i<=D;i++,now--) { ans=mulmod(ans,now); ans=mulmod(ans,gyakugen(i)); } ans=mulmod(ans,R-X+1); ans=mulmod(ans,C-Y+1); printf("%d\n",ans); } else { int ans=getexactputterns(X,Y,D,L); ans=mulmod(ans,R-X+1); ans=mulmod(ans,C-Y+1); printf("%d\n",ans); } return 0; }
Submission Info
Submission Time | |
---|---|
Task | D - AtCoder社の冬 |
User | mikecat |
Language | C (GCC 4.6.4) |
Score | 101 |
Code Size | 1530 Byte |
Status | AC |
Exec Time | 95 ms |
Memory | 800 KB |
Compile Error
./Main.c: In function ‘main’: ./Main.c:54:7: warning: ignoring return value of ‘scanf’, declared with attribute warn_unused_result [-Wunused-result]
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 | 21 ms | 792 KB |
00_sample_02E.txt | AC | 20 ms | 800 KB |
00_sample_03E.txt | AC | 20 ms | 800 KB |
00_sample_04.txt | AC | 35 ms | 720 KB |
test_01.txt | AC | 21 ms | 796 KB |
test_02.txt | AC | 19 ms | 792 KB |
test_03E.txt | AC | 21 ms | 792 KB |
test_04E.txt | AC | 21 ms | 800 KB |
test_05.txt | AC | 20 ms | 792 KB |
test_06.txt | AC | 57 ms | 792 KB |
test_07E.txt | AC | 20 ms | 788 KB |
test_08E.txt | AC | 21 ms | 688 KB |
test_09.txt | AC | 29 ms | 800 KB |
test_10.txt | AC | 46 ms | 800 KB |
test_11E.txt | AC | 21 ms | 800 KB |
test_12E.txt | AC | 22 ms | 792 KB |
test_13.txt | AC | 22 ms | 792 KB |
test_14.txt | AC | 27 ms | 732 KB |
test_15E.txt | AC | 19 ms | 796 KB |
test_16E.txt | AC | 19 ms | 792 KB |
test_17.txt | AC | 21 ms | 800 KB |
test_18.txt | AC | 23 ms | 696 KB |
test_19E.txt | AC | 22 ms | 796 KB |
test_20E.txt | AC | 21 ms | 796 KB |
test_21.txt | AC | 22 ms | 800 KB |
test_22.txt | AC | 33 ms | 792 KB |
test_23E.txt | AC | 20 ms | 792 KB |
test_24E.txt | AC | 21 ms | 796 KB |
test_25.txt | AC | 22 ms | 668 KB |
test_26.txt | AC | 22 ms | 672 KB |
test_27E.txt | AC | 18 ms | 788 KB |
test_28E.txt | AC | 21 ms | 788 KB |
test_29.txt | AC | 95 ms | 800 KB |
test_30.txt | AC | 87 ms | 800 KB |
test_31E.txt | AC | 20 ms | 796 KB |
test_32E.txt | AC | 18 ms | 788 KB |
test_33.txt | AC | 17 ms | 788 KB |
test_34.txt | AC | 19 ms | 792 KB |
test_35.txt | AC | 21 ms | 800 KB |
test_36E.txt | AC | 19 ms | 784 KB |
test_37E.txt | AC | 19 ms | 788 KB |
test_38E.txt | AC | 20 ms | 792 KB |
test_39E.txt | AC | 25 ms | 684 KB |
test_40.txt | AC | 19 ms | 788 KB |
test_41.txt | AC | 18 ms | 796 KB |
test_42.txt | AC | 20 ms | 792 KB |
test_43.txt | AC | 22 ms | 664 KB |
test_44.txt | AC | 20 ms | 796 KB |
test_45E.txt | AC | 22 ms | 792 KB |
test_46.txt | AC | 21 ms | 788 KB |
test_47E.txt | AC | 20 ms | 800 KB |
test_48.txt | AC | 20 ms | 796 KB |