#include <bits/stdc++.h>
using namespace std;
const int nx=1e3+5, kx=5e4+5;
int n, a[nx], qs[nx], dp[nx][kx], f[nx];
void solve()
{
cin>>n;
for (int i=1; i<=n; i++) cin>>a[i], qs[i]=qs[i-1]+a[i], f[i]=0;
for (int i=1; i<=n; i++)
{
for (int j=1; j<kx; j++)
{
dp[i][j]=dp[i-1][j];
if (j==a[i]) dp[i][j]=i;
if (j>a[i]) dp[i][j]=max(dp[i][j], dp[i-1][j-a[i]]);
}
for (int j=i-1; j>=1; j--)
{
if ((qs[i]-qs[j-1])%2==0&&dp[i][(qs[i]-qs[j-1])/2]>=j);
else f[i-j+1]=1;
}
}
int cnt=0;
for (int i=2; i<=n; i++) if (!f[i]) cnt++;
cout<<cnt<<' ';
for (int i=2; i<=n; i++) if (!f[i]) cout<<i<<' ';
cout<<'\n';
}
int main()
{
cin.tie(NULL)->sync_with_stdio(false);
int _t; cin>>_t;
for (int i=0; i<kx; i++) dp[0][i]=-1;
while (_t--) solve();
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |