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
AC × 4
AC × 26
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