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
AC × 25
AC × 52
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