Submission #871351


Source Code Expand

//#pragma comment(linker, "/STACK:102400000,102400000")
#include <fstream>
#include <iostream>
#include <functional>
#include <algorithm>
#include <cstring>
#include <vector>
#include <string>
#include <cstdio>
#include <cmath>
#include <queue>
#include <stack>
#include <deque>
#include <ctime>
#include <list>
#include <set>
#include <map>
using namespace std;

typedef long long ll;
#define eps 1e-10
#define LL_INF 0x33ffffffffffffff
#define INF 0x3f3f3f3f
#define mem(a, b) memset(a, b, sizeof(a))
#define pper(i,n,m) for(int i = n;i >= m; i--)
#define repp(i, n, m) for (int i = n; i <= m; i++)
#define rep(i, n, m) for (int i = n; i < m; i++)
#define sa(n) scanf("%d", &(n))
#define mp make_pair
#define ff first
#define ss second
#define pb push_back

const int maxn = 4e6 + 5;
const double PI = acos(-1.0);
const ll mod = 1e9 + 7;
ll po(ll a, ll b,ll mod) { ll res = 1; a %= mod; for (; b; b >>= 1) { if (b & 1)res = res*a%mod; a = a*a%mod; }return res; }
ll gcd(ll a,ll b){ if(a==0){return b;}else{ return gcd(b%a,a);}}

ll n,k;
ll fac[maxn],inv[maxn];
ll dp[2005][2005];
ll C(ll n,ll x)
{
	return fac[n]*inv[x]%mod*inv[n-x]%mod;
}

void init()
{
	fac[0]=1;
	inv[0]=1;
	ll up = 4e6;
	for(ll i=1;i <= up;i++)
	{
		fac[i]=fac[i-1]*i%mod;
		inv[i]=po(fac[i],mod-2,mod);
	}
}

ll cal(ll i,ll j)
{
	if(dp[i][j]!=-1)
	{
		return dp[i][j];
	}
	ll res=0;
	if(i==0&&j==0)
	{
		return 1;
	}
	if(j > i)
	{
		res += C(i+j*(k-1)-1,k-2)*cal(i,j-1)%mod;
	}
	res%=mod;
	if(i)
	{
		res += cal(i-1,j);
	}
	res%=mod;
	dp[i][j]=res;
	return res;
}

void solve()
{
	memset(dp,-1,sizeof(dp));
	cin>>n>>k;
	if(k==1)
	{
		cout<<1<<endl;
		return;
	}
	ll res= cal(n,n);
	for(ll i=1;i<=n;i++)
	{
		res=res*i%mod;
	}
	cout<<res<<endl;
}
int main()
{
    init();
    solve();
	return 0;
}

Submission Info

Submission Time
Task F - Leftmost Ball
User wangchong756
Language C++14 (GCC 5.4.1)
Score 1600
Code Size 1875 Byte
Status AC
Exec Time 1500 ms
Memory 94336 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 1600 / 1600
Status
AC × 4
AC × 24
Set Name Test Cases
Sample 0_00.txt, 0_01.txt, 0_02.txt, 0_03.txt
All 0_00.txt, 0_01.txt, 0_02.txt, 0_03.txt, 1_00.txt, 1_01.txt, 1_02.txt, 1_03.txt, 1_04.txt, 1_05.txt, 1_06.txt, 1_07.txt, 1_08.txt, 1_09.txt, 1_10.txt, 1_11.txt, 1_12.txt, 1_13.txt, 1_14.txt, 1_15.txt, 1_16.txt, 1_17.txt, 1_18.txt, 1_19.txt
Case Name Status Exec Time Memory
0_00.txt AC 1391 ms 94080 KB
0_01.txt AC 1387 ms 94080 KB
0_02.txt AC 1384 ms 94080 KB
0_03.txt AC 1500 ms 94336 KB
1_00.txt AC 1387 ms 94208 KB
1_01.txt AC 1405 ms 94208 KB
1_02.txt AC 1386 ms 94208 KB
1_03.txt AC 1500 ms 94336 KB
1_04.txt AC 1489 ms 94336 KB
1_05.txt AC 1482 ms 94336 KB
1_06.txt AC 1477 ms 94336 KB
1_07.txt AC 1471 ms 94336 KB
1_08.txt AC 1472 ms 94336 KB
1_09.txt AC 1488 ms 94336 KB
1_10.txt AC 1472 ms 94336 KB
1_11.txt AC 1497 ms 94336 KB
1_12.txt AC 1413 ms 94208 KB
1_13.txt AC 1471 ms 94336 KB
1_14.txt AC 1403 ms 94208 KB
1_15.txt AC 1403 ms 94208 KB
1_16.txt AC 1437 ms 94208 KB
1_17.txt AC 1470 ms 94336 KB
1_18.txt AC 1397 ms 94208 KB
1_19.txt AC 1495 ms 94336 KB