Submission #3589359


Source Code Expand

#include<bits/stdc++.h>

typedef long long ll;

int const N = 305 * 2;
int const MOD = 1e9 + 7;

int pa[N];
ll f[N][N];
ll fac[N];
int sum[N];
int n, m;

int main() {
	std::ios::sync_with_stdio(0);
	std::cin >> n >> m;
	fac[0] = 1;
	for(int i = 1; i < N; ++i) if((i & 1) == 0) {
		fac[i] = fac[i - 2] * (i - 1) % MOD;
	}
	for(int i = 1; i <= m; ++i) {
		int x, y;
		std::cin >> x >> y;
		pa[x] = y;
		pa[y] = x;
	}

	n <<= 1;
	for(int i = 1; i <= n; ++i) {
		sum[i] = sum[i - 1];
		if(pa[i] == 0) 
			++sum[i];
	}

	ll ans = 0;
	for(int i = 1; i <= n; ++i) {
		for(int j = 1; j + i - 1 <= n; ++j) {
			int l = j, r = j + i - 1;
			bool flag = (sum[r] - sum[l - 1]) % 2;
			for(int k = l; k <= r; ++k) if(pa[k]) {
				if(pa[k] < l || pa[k] > r) {
					flag = 1;
					break;
				}
			}
			if(flag) continue;
			f[l][r] = fac[sum[r] - sum[l - 1]];
			for(int k = l; k < r; ++k) {
				int tmp = f[l][k] * fac[sum[r] - sum[k]] % MOD;
				tmp = (MOD - tmp) % MOD;
				f[l][r] = (f[l][r] + tmp) % MOD;
			}
			ans += f[l][r] * fac[n - m - m - (sum[r] - sum[l - 1])] % MOD;
			ans %= MOD;
		}
	}
	std::cout << ans << '\n';
	return 0;
}

Submission Info

Submission Time
Task D - Chords
User vjudge1
Language C++14 (GCC 5.4.1)
Score 900
Code Size 1128 Byte
Status AC
Exec Time 165 ms
Memory 3072 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 900 / 900
Status
AC × 3
AC × 26
Set Name Test Cases
Sample sample-01.txt, sample-02.txt, sample-03.txt
All sample-01.txt, sample-02.txt, sample-03.txt, sample-01.txt, sample-02.txt, sample-03.txt, subtask01-01.txt, subtask01-02.txt, subtask01-03.txt, subtask01-04.txt, subtask01-05.txt, subtask01-06.txt, subtask01-07.txt, subtask01-08.txt, subtask01-09.txt, subtask01-10.txt, subtask01-11.txt, subtask01-12.txt, subtask01-13.txt, subtask01-14.txt, subtask01-15.txt, subtask01-16.txt, subtask01-17.txt, subtask01-18.txt, subtask01-19.txt, subtask01-20.txt
Case Name Status Exec Time Memory
sample-01.txt AC 1 ms 256 KB
sample-02.txt AC 1 ms 256 KB
sample-03.txt AC 1 ms 256 KB
subtask01-01.txt AC 1 ms 256 KB
subtask01-02.txt AC 120 ms 2816 KB
subtask01-03.txt AC 75 ms 2816 KB
subtask01-04.txt AC 1 ms 512 KB
subtask01-05.txt AC 1 ms 256 KB
subtask01-06.txt AC 45 ms 2432 KB
subtask01-07.txt AC 5 ms 1152 KB
subtask01-08.txt AC 2 ms 640 KB
subtask01-09.txt AC 165 ms 3072 KB
subtask01-10.txt AC 39 ms 2944 KB
subtask01-11.txt AC 13 ms 2560 KB
subtask01-12.txt AC 3 ms 1152 KB
subtask01-13.txt AC 2 ms 640 KB
subtask01-14.txt AC 2 ms 256 KB
subtask01-15.txt AC 15 ms 2688 KB
subtask01-16.txt AC 22 ms 2560 KB
subtask01-17.txt AC 34 ms 2176 KB
subtask01-18.txt AC 14 ms 1280 KB
subtask01-19.txt AC 30 ms 1408 KB
subtask01-20.txt AC 95 ms 2176 KB