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
2013-12-12 22:12:28+0900
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
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