Submission #4662585
Source Code Expand
#include <iostream>
#include <iomanip>
#include <ios>
#include <vector>
#include <string>
#include <algorithm>
#include <functional>
#include <queue>
#include <stack>
#include <set>
#include <cmath>
#include <bitset>
#include <map>
#define rep(i,n) for(int (i)=0;(i)<(n);(i)++)
#define rep1(i,n) for(int i=1;i<=(int)(n);i++)
#define sz(c) ((int)(c).size())
using namespace std;
typedef long long ll;
typedef vector<int> vi;
typedef vector<ll> vll;
const ll MOD=1e9+7;
const int MAX=1e5+5;
ll extgcd(ll a,ll b,ll& x, ll& y){
ll d=a;
if(b!=0){
d = extgcd(b, a%b, y, x);
y -= (a/b) * x;
}
else{
x = 1; y = 0;
}
return d;
}
ll mod_inv(ll a,ll m){
ll x,y;
extgcd(a,m,x,y);
return (m+x%m)%m;
}
ll fc[2*MAX];
ll cb(int a,int b){
return (((fc[a]*mod_inv(fc[b],MOD))%MOD)*mod_inv(fc[a-b],MOD))%MOD;
}
//(a,b)から(c,d)へ行く
ll rect(int a,int b,int c,int d){
return cb(a-c+d-b,a-c);
}
int main(){
fc[0]=1;
rep1(i,2*MAX-1)fc[i]=(i*fc[i-1])%MOD;
int H,W,A,B;
cin>>H>>W>>A>>B;
ll ans=0;
int p=A,q=B;
while(p<H && q<W){
ll k=(rect(H-1,0,p,q)*rect(p,q,0,W-1))%MOD;
ans=(ans+k)%MOD;
p++;q++;
}
cout<<ans<<endl;
}
Submission Info
Submission Time |
|
Task |
D - Iroha and a Grid |
User |
spawn |
Language |
C++14 (GCC 5.4.1) |
Score |
400 |
Code Size |
1206 Byte |
Status |
AC |
Exec Time |
119 ms |
Memory |
1792 KB |
Judge Result
Set Name |
Sample |
All |
Score / Max Score |
0 / 0 |
400 / 400 |
Status |
|
|
Set Name |
Test Cases |
Sample |
subtask0_01.txt, subtask0_02.txt, subtask0_03.txt, subtask0_04.txt |
All |
subtask0_01.txt, subtask0_02.txt, subtask0_03.txt, subtask0_04.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_max.txt, subtask2_01.txt, subtask2_02.txt, subtask2_03.txt, subtask2_04.txt, subtask2_05.txt, subtask2_06.txt, subtask2_07.txt, subtask2_08.txt, subtask2_09.txt, subtask2_10.txt, subtask2_max.txt |
Case Name |
Status |
Exec Time |
Memory |
subtask0_01.txt |
AC |
3 ms |
1792 KB |
subtask0_02.txt |
AC |
3 ms |
1792 KB |
subtask0_03.txt |
AC |
3 ms |
1792 KB |
subtask0_04.txt |
AC |
59 ms |
1792 KB |
subtask1_01.txt |
AC |
3 ms |
1792 KB |
subtask1_02.txt |
AC |
3 ms |
1792 KB |
subtask1_03.txt |
AC |
3 ms |
1792 KB |
subtask1_04.txt |
AC |
3 ms |
1792 KB |
subtask1_05.txt |
AC |
3 ms |
1792 KB |
subtask1_06.txt |
AC |
3 ms |
1792 KB |
subtask1_07.txt |
AC |
3 ms |
1792 KB |
subtask1_08.txt |
AC |
3 ms |
1792 KB |
subtask1_09.txt |
AC |
3 ms |
1792 KB |
subtask1_10.txt |
AC |
3 ms |
1792 KB |
subtask1_max.txt |
AC |
3 ms |
1792 KB |
subtask2_01.txt |
AC |
7 ms |
1792 KB |
subtask2_02.txt |
AC |
3 ms |
1792 KB |
subtask2_03.txt |
AC |
3 ms |
1792 KB |
subtask2_04.txt |
AC |
9 ms |
1792 KB |
subtask2_05.txt |
AC |
4 ms |
1792 KB |
subtask2_06.txt |
AC |
119 ms |
1792 KB |
subtask2_07.txt |
AC |
6 ms |
1792 KB |
subtask2_08.txt |
AC |
75 ms |
1792 KB |
subtask2_09.txt |
AC |
46 ms |
1792 KB |
subtask2_10.txt |
AC |
52 ms |
1792 KB |
subtask2_max.txt |
AC |
15 ms |
1792 KB |