Submission #23828073


Source Code Expand

#include<bits/stdc++.h>
#define int long long
#define inf 999999999999
#define N 100000
#define P 998244353
using namespace std;
int n,a[101],ans,p[101],fl[101],gl[101],ans1[101];
int dp[101][10001][101],jc[101],ss;
void dfs(int x){
	if(x>n){
		int na=0,nb=0;
		for(int i=1;i<=n;i++){
			if(na<=nb)na+=a[p[i]];
			else nb+=a[p[i]];
		}
		if(na==nb){
			ans++;
//			for(int j=1;j<=n;j++)cout<<p[j]<<' ';cout<<'\n';
		}
		return;
	}
	for(int i=1;i<=n;i++){
		if(!fl[i]){
			p[x]=i,fl[i]=1;
			dfs(x+1);
			p[x]=fl[i]=0;
		}
	}
}
void dfs1(int x){
	if(x>n){
		int na=0,nb=0;for(int i=1;i<=n;i++)if(gl[i])na+=a[i],nb++;else na-=a[i];
		if(!na)ans1[nb]++;return;
	}
	gl[x]=1,dfs1(x+1),gl[x]=0,dfs1(x+1);
}
signed main(){
//	freopen("optimize0.in","r",stdin);
//	freopen("optimize.out","w",stdout);
	cin>>n;jc[0]=1;for(int i=1;i<=n;i++)jc[i]=jc[i-1]*i%P;
	for(int i=1;i<=n;i++)cin>>a[i],ss+=a[i];
	if(ss&1){
		cout<<0<<endl;return 0;
	}
	dp[0][0][0]=1;
	for(int i=1;i<=n;i++){
		for(int j=0;j<=ss;j++){
			for(int k=0;k<=n;k++){
				if(!dp[i-1][j][k])continue;
						dp[i][j+a[i]][k+1]+=dp[i-1][j][k],dp[i][j+a[i]][k+1]%=P;
						dp[i][j][k]+=dp[i-1][j][k],dp[i][j][k]%=P;
			}
			
		}
	}
	for(int k=0;k<=n;k++)ans+=dp[n][ss/2][k]*jc[k]%P*jc[n-k],ans%=P;
	cout<<ans<<endl;
	return 0;
}
/*

*/

Submission Info

Submission Time
Task B - Greedy Division
User AlyName
Language C++ (GCC 9.2.1)
Score 800
Code Size 1347 Byte
Status AC
Exec Time 290 ms
Memory 211540 KiB

Compile Error

./Main.cpp: In function ‘void dfs1(long long int)’:
./Main.cpp:33:3: warning: this ‘if’ clause does not guard... [-Wmisleading-indentation]
   33 |   if(!na)ans1[nb]++;return;
      |   ^~
./Main.cpp:33:21: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the ‘if’
   33 |   if(!na)ans1[nb]++;return;
      |                     ^~~~~~

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 800 / 800
Status
AC × 3
AC × 22
Set Name Test Cases
Sample 00-sample-001.txt, 00-sample-002.txt, 00-sample-003.txt
All 00-sample-001.txt, 00-sample-002.txt, 00-sample-003.txt, 01-001.txt, 01-002.txt, 01-003.txt, 01-004.txt, 01-005.txt, 01-006.txt, 01-007.txt, 01-008.txt, 01-009.txt, 01-010.txt, 01-011.txt, 01-012.txt, 01-013.txt, 01-014.txt, 01-015.txt, 01-016.txt, 01-017.txt, 01-018.txt, 01-019.txt
Case Name Status Exec Time Memory
00-sample-001.txt AC 4 ms 3664 KiB
00-sample-002.txt AC 2 ms 3492 KiB
00-sample-003.txt AC 4 ms 4316 KiB
01-001.txt AC 3 ms 3628 KiB
01-002.txt AC 3 ms 3444 KiB
01-003.txt AC 2 ms 3588 KiB
01-004.txt AC 3 ms 3644 KiB
01-005.txt AC 1 ms 3532 KiB
01-006.txt AC 3 ms 4132 KiB
01-007.txt AC 2 ms 3564 KiB
01-008.txt AC 248 ms 184872 KiB
01-009.txt AC 48 ms 34640 KiB
01-010.txt AC 125 ms 95756 KiB
01-011.txt AC 99 ms 74564 KiB
01-012.txt AC 2 ms 3452 KiB
01-013.txt AC 3 ms 3452 KiB
01-014.txt AC 283 ms 211540 KiB
01-015.txt AC 284 ms 208964 KiB
01-016.txt AC 254 ms 178124 KiB
01-017.txt AC 285 ms 210264 KiB
01-018.txt AC 14 ms 7952 KiB
01-019.txt AC 290 ms 24132 KiB