Submission #122850


Source Code Expand

#pragma warning (disable:4996)
#define rep(x,y) for(x=0;x<(y);x++)
#define Rep(x,y,z) for(x=(y);x<(z);x++)
#define revrep(x,y) for(x=(y)-1;x>=0;x--)
#define revRep(x,y,z) for(x=(z)-1;x>=(y);x--)

typedef long long ll;

template <class T> inline void swap(T& x,T& y)
{
	T t = x;
	x = y;
	y = t;
}


template <class T> void sort(T* a, int n)
{
	int i, w;
	bool chg = true;
	for(w = int(n / 1.3) ; chg ; w = int(w/1.3))
	{
		if(w <= 1)
		{
			w = 1;
			chg = false;
		}
		rep(i, n-w)
		{
			if(a[i] > a[i+w])
			{
				swap(a[i], a[i+w]);
				chg = true;
			}
		}
		if(!chg)
		{
			return;
		}
		w = int(w/1.3);
		if(w <= 1)
		{
			w = 1;
			chg = false;
		}
		revrep(i, n-w)
		{
			if(a[i] > a[i+w])
			{
				swap(a[i], a[i+w]);
				chg = true;
			}
		}
	}
}

template <class T> inline int search(T* ary, T dat, int arynum)
{
	int l, h;
	l = 0;
	h = arynum;
	while(h-l > 1)
	{
		if(ary[(h+l)/2]>=dat)
		{
			h = (h + l) / 2;
		}
		else
		{
			l = (h + l) / 2;
		}
	}
	return h;
}

template <class T> inline T gcd(T x, T y)
{
	while(y)
	{
		x %= y;
		if(x == 0)
		{
			return y;
		}
		y %= x;
	}
	return x;
}

int modadd(int a, int b, int p = 1000000007)
{
	ll aa = a;
	aa += b;
	return aa % p;
}
int modsub(int a, int b, int p = 1000000007)
{
	ll aa = a;
	aa -= b;
	while(aa < 0)
	{
		aa += p;
	}
	return aa % p;
}

int modmul(int a, int b, int p = 1000000007)
{
	ll aa = a;
	aa *= b;
	return aa % p;
}

int moddiv(int a, int b, int p = 1000000007)
{
	ll aa = a;
	ll bb = b;
	ll r = 1;
	while(bb > 1)
	{
		ll d = (p / bb + 1);
		r = r * d;
		r %= p;
		bb *= d;
		bb %= p;
	}
	aa *= r;

	return aa % p;
}

#include "stdio.h"

int calc(int x, int y, int d, int l)
{
	int i;
	int a = 1;
	int s = x * y;
	if(x < 1)
	{
		return 0;
	}
	if(y < 1)
	{
		return 0;
	}
	if(s < d + l)
	{
		return 0;
	}
	for(i = 1 ; i <= s ; i++)
	{
		a = modmul(a,i);
	}
	for(i = 1 ; i <= d ; i++)
	{
		a = moddiv(a, i);
	}
	for(i = 1 ; i <= l ; i++)
	{
		a = moddiv(a, i);
	}
	for(i = 1 ; i <= s-d-l ; i++)
	{
		a = moddiv(a, i);
	}
	return a;
}
int main(void)
{
	int r, c, x, y, d, l;
	scanf("%d %d", &r,&c);
	scanf("%d %d", &x,&y);
	scanf("%d %d", &d,&l);
	int a = 1;
	a *= r - x + 1;
	a *= c - y + 1;
	int b0, b1, b2;
	b0 = modsub(    calc(x  , y  , d, l) , calc(x, y-1, d, l) * 2);
	b0 = modadd(b0, calc(x  , y-2, d, l));
	b1 = modsub(    calc(x-1, y  , d, l) , calc(x-1, y-1, d, l) * 2);
	b1 = modadd(b1, calc(x-1, y-2, d, l));
	b2 = modsub(    calc(x-2, y  , d, l) , calc(x-2, y-1, d, l) * 2);
	b2 = modadd(b2, calc(x-2, y-2, d, l));
	a = modmul(a, modadd(modsub(b0,b1*2),b2));
	printf("%d\n", a);
}

Submission Info

Submission Time
Task D - AtCoder社の冬
User tokusin
Language C++ (G++ 4.6.4)
Score 101
Code Size 2767 Byte
Status AC
Exec Time 28 ms
Memory 804 KB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:173:23: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
./Main.cpp:174:23: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
./Main.cpp:175:23: warning: ignoring return value of ‘int scanf(const char*, ...)’, 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 19 ms 712 KB
00_sample_02E.txt AC 20 ms 708 KB
00_sample_03E.txt AC 20 ms 716 KB
00_sample_04.txt AC 19 ms 700 KB
test_01.txt AC 19 ms 804 KB
test_02.txt AC 19 ms 704 KB
test_03E.txt AC 19 ms 680 KB
test_04E.txt AC 19 ms 676 KB
test_05.txt AC 20 ms 676 KB
test_06.txt AC 28 ms 804 KB
test_07E.txt AC 19 ms 712 KB
test_08E.txt AC 19 ms 656 KB
test_09.txt AC 20 ms 800 KB
test_10.txt AC 19 ms 708 KB
test_11E.txt AC 20 ms 680 KB
test_12E.txt AC 19 ms 708 KB
test_13.txt AC 19 ms 800 KB
test_14.txt AC 19 ms 712 KB
test_15E.txt AC 19 ms 700 KB
test_16E.txt AC 20 ms 800 KB
test_17.txt AC 19 ms 796 KB
test_18.txt AC 18 ms 708 KB
test_19E.txt AC 19 ms 716 KB
test_20E.txt AC 19 ms 800 KB
test_21.txt AC 18 ms 704 KB
test_22.txt AC 20 ms 804 KB
test_23E.txt AC 19 ms 708 KB
test_24E.txt AC 19 ms 712 KB
test_25.txt AC 19 ms 800 KB
test_26.txt AC 19 ms 712 KB
test_27E.txt AC 24 ms 720 KB
test_28E.txt AC 18 ms 704 KB
test_29.txt AC 21 ms 716 KB
test_30.txt AC 21 ms 704 KB
test_31E.txt AC 19 ms 704 KB
test_32E.txt AC 19 ms 708 KB
test_33.txt AC 19 ms 712 KB
test_34.txt AC 19 ms 716 KB
test_35.txt AC 19 ms 716 KB
test_36E.txt AC 20 ms 712 KB
test_37E.txt AC 21 ms 796 KB
test_38E.txt AC 18 ms 708 KB
test_39E.txt AC 19 ms 712 KB
test_40.txt AC 19 ms 700 KB
test_41.txt AC 19 ms 804 KB
test_42.txt AC 19 ms 712 KB
test_43.txt AC 19 ms 700 KB
test_44.txt AC 19 ms 804 KB
test_45E.txt AC 19 ms 716 KB
test_46.txt AC 19 ms 712 KB
test_47E.txt AC 19 ms 752 KB
test_48.txt AC 19 ms 796 KB