Submission #71020354


Source Code Expand

Copy
#include <stdio.h>
#define MOD_BY 1000000007
int add(int a, int b) {
return a + b - MOD_BY * (a + b >= MOD_BY);
}
int N;
int a[24][24];
int memo[1 << 24];
int calc(int pos, int used) {
int ans = 0;
int i;
if (pos >= N) return 1;
if (memo[used]) return ~memo[used];
for (i = 0; i < N; i++) {
if (a[pos][i] && !((used >> i) & 1)) {
ans = add(ans, calc(pos + 1, used | (1 << i)));
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#include <stdio.h>

#define MOD_BY 1000000007

int add(int a, int b) {
	return a + b - MOD_BY * (a + b >= MOD_BY);
}

int N;
int a[24][24];

int memo[1 << 24];

int calc(int pos, int used) {
	int ans = 0;
	int i;
	if (pos >= N) return 1;
	if (memo[used]) return ~memo[used];
	for (i = 0; i < N; i++) {
		if (a[pos][i] && !((used >> i) & 1)) {
			ans = add(ans, calc(pos + 1, used | (1 << i)));
		}
	}
	return ~(memo[used] = ~ans);
}

int main(void) {
	int i, j;
	if (scanf("%d", &N) != 1) return 1;
	for (i = 0; i < N; i++) {
		for (j = 0; j < N; j++) {
			if (scanf("%d", &a[i][j]) != 1) return 1;
		}
	}
	printf("%d\n", calc(0, 0));
	return 0;
}

Submission Info

Submission Time
Task O - Matching
User mikecat
Language C (gcc 12.2.0)
Score 100
Code Size 685 Byte
Status AC
Exec Time 203 ms
Memory 9912 KiB

Judge Result

Set Name All
Score / Max Score 100 / 100
Status
AC × 17
Set Name Test Cases
All 0_00, 0_01, 0_02, 0_03, 1_00, 1_01, 1_02, 1_03, 1_04, 1_05, 1_06, 1_07, 1_08, 1_09, 1_10, 1_11, 1_12
Case Name Status Exec Time Memory
0_00 AC 1 ms 1720 KiB
0_01 AC 0 ms 1552 KiB
0_02 AC 1 ms 1672 KiB
0_03 AC 142 ms 9804 KiB
1_00 AC 1 ms 1608 KiB
1_01 AC 1 ms 1700 KiB
1_02 AC 0 ms 1592 KiB
1_03 AC 0 ms 1628 KiB
1_04 AC 12 ms 6340 KiB
1_05 AC 28 ms 8916 KiB
1_06 AC 101 ms 9792 KiB
1_07 AC 116 ms 9832 KiB
1_08 AC 171 ms 9764 KiB
1_09 AC 163 ms 9904 KiB
1_10 AC 184 ms 9912 KiB
1_11 AC 203 ms 9904 KiB
1_12 AC 173 ms 9784 KiB


2025-11-17 (Mon)
08:54:58 +09:00