/*input
2
7
7 3 5 1 3 3 5
6
1 1 1 1 1 1
*/
#include<bits/stdc++.h>
using namespace std;
#define REP(i,n) for(int i=0;i<n;i++)
#define MNTO(x,y) x=min(x,y)
#define REP1(i,n) for(int i=1;i<=n;i++)
#define ll long long
#define ld long double
#define sz(x) (int)x.size()
#define pb push_back
const int maxn=1e3+5;
int arr[maxn];
bool wk[maxn];
void solve(){
int n;
cin>>n;
REP(i,n) cin>>arr[i];
REP1(i,n) wk[i]=1;
REP(i,n){
int s=0;
bitset<50005> bs;
bs[0]=1;
for(int j=i;j<n;j++){
bs|=(bs<<arr[j]);
s+=arr[j];
if(s%2 or !bs[s/2]) wk[j-i+1]=0;
}
}
int cnt=0;
REP1(i,n) cnt+=wk[i];
cout<<cnt<<' ';
REP1(i,n) if(wk[i]) cout<<i<<' ';
cout<<'\n';
}
int main(){
ios::sync_with_stdio(false),cin.tie(0);
int t;
cin>>t;
while(t--) solve();
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
7 ms |
212 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
47 ms |
320 KB |
Output is correct |
2 |
Correct |
220 ms |
320 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
761 ms |
320 KB |
Output is correct |
2 |
Execution timed out |
2087 ms |
312 KB |
Time limit exceeded |
3 |
Halted |
0 ms |
0 KB |
- |