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
2021-06-27 22:29:26+0900
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
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