Submission #35717030


Source Code Expand

#include<bits/stdc++.h>
#define LL long long
#define MOD 998244353
using namespace std;
int inc(const int &a, const int &b)
{
	return a + b >= MOD ? a + b - MOD : a + b;
}
int mul(const int &a, const int &b)
{
	return 1LL * a * b % MOD;
}
void Mul(int &a, const int &b)
{
	a = 1LL * a * b % MOD;
}
void Sqr(int &a)
{
	a = 1LL * a * a % MOD;
}
int qwqmi(int x, int k = MOD - 2)
{
	int res = 1;
	while(k)
	{
		if(k & 1) Mul(res, x);
		Sqr(x), k >>= 1;
	}
	return res;
}
const int inv2 = qwqmi(2);
int binom2(int x)
{
	return mul(mul(x, x - 1), inv2);
}
const int N = 5e3 + 5;
int n, r[N], c[N], sum, _sum, x0;
int f[N][N];
int main()
{
	scanf("%d", &n);
	for(int i = 1; i <= n; ++i) 
		scanf("%d", &r[i]), _sum += r[i];
	for(int i = 1; i <= n; ++i) 
	{
		scanf("%d", &c[i]);
		sum += c[i];
		if(c[i] == 2) ++x0;
	}
	if(sum != _sum)
	{
		puts("0");
		return 0;
	}
	f[0][x0] = 1;
	for(int i = 1; i <= n; ++i)
	{
		sum -= r[i];
		for(int x = 0; x <= n; ++x)
		{
			int y = sum - 2 * x;
			if(r[i] == 0) f[i][x] = f[i - 1][x];
			if(r[i] == 1) f[i][x] = inc(mul(f[i - 1][x], y + 1), mul(f[i - 1][x + 1], x + 1));
			if(r[i] == 2) f[i][x] = inc(inc(mul(f[i - 1][x + 1], x + 1), mul(f[i - 1][x + 1], mul(x + 1, y))), 
										inc(mul(f[i - 1][x + 2], binom2(x + 2)), mul(f[i - 1][x], binom2(y + 2))));
		}
	}
	printf("%d\n", f[n][0]);
	return 0;
}

Submission Info

Submission Time
Task G - Row Column Sums 2
User Schucking_Sattin
Language C++ (GCC 9.2.1)
Score 600
Code Size 1410 Byte
Status AC
Exec Time 320 ms
Memory 101584 KiB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:41:7: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
   41 |  scanf("%d", &n);
      |  ~~~~~^~~~~~~~~~
./Main.cpp:43:8: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
   43 |   scanf("%d", &r[i]), _sum += r[i];
      |   ~~~~~^~~~~~~~~~~~~
./Main.cpp:46:8: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
   46 |   scanf("%d", &c[i]);
      |   ~~~~~^~~~~~~~~~~~~

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 600 / 600
Status
AC × 3
AC × 37
Set Name Test Cases
Sample example0.txt, example1.txt, example2.txt
All 000.txt, 001.txt, 002.txt, 003.txt, 004.txt, 005.txt, 006.txt, 007.txt, 008.txt, 009.txt, 010.txt, 011.txt, 012.txt, 013.txt, 014.txt, 015.txt, 016.txt, 017.txt, 018.txt, 019.txt, 020.txt, 021.txt, 022.txt, 023.txt, 024.txt, 025.txt, 026.txt, 027.txt, 028.txt, 029.txt, 030.txt, 031.txt, 032.txt, 033.txt, example0.txt, example1.txt, example2.txt
Case Name Status Exec Time Memory
000.txt AC 3 ms 3616 KiB
001.txt AC 6 ms 3640 KiB
002.txt AC 2 ms 3700 KiB
003.txt AC 2 ms 3624 KiB
004.txt AC 1 ms 3636 KiB
005.txt AC 79 ms 101352 KiB
006.txt AC 135 ms 101420 KiB
007.txt AC 320 ms 101356 KiB
008.txt AC 4 ms 3668 KiB
009.txt AC 3 ms 3648 KiB
010.txt AC 2 ms 3632 KiB
011.txt AC 4 ms 3600 KiB
012.txt AC 3 ms 3540 KiB
013.txt AC 3 ms 3628 KiB
014.txt AC 209 ms 101484 KiB
015.txt AC 250 ms 101400 KiB
016.txt AC 173 ms 101520 KiB
017.txt AC 173 ms 101400 KiB
018.txt AC 102 ms 101512 KiB
019.txt AC 272 ms 101432 KiB
020.txt AC 190 ms 101476 KiB
021.txt AC 192 ms 101364 KiB
022.txt AC 179 ms 101492 KiB
023.txt AC 315 ms 101400 KiB
024.txt AC 105 ms 101476 KiB
025.txt AC 156 ms 101580 KiB
026.txt AC 118 ms 101404 KiB
027.txt AC 99 ms 101584 KiB
028.txt AC 217 ms 101524 KiB
029.txt AC 251 ms 101408 KiB
030.txt AC 223 ms 101520 KiB
031.txt AC 127 ms 101472 KiB
032.txt AC 153 ms 101528 KiB
033.txt AC 287 ms 101584 KiB
example0.txt AC 2 ms 3708 KiB
example1.txt AC 2 ms 3616 KiB
example2.txt AC 2 ms 3644 KiB