이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define sz(x) x.size()
#define pb push_back
#define F first
#define S second
#define nl '\n'
const int N = 1001;
int ans[N], a[N], p[N];
void solve()
{
	int n;
	cin >>n;
	int a[n + 1], p[n + 1];
	for( int i = 1; i <= n; ++i )
	{
		cin >>a[i];
		p[i] = p[i - 1] + a[i];
	}
	for( int i = 1; i <= n; ++i )
	{
		map<int, bool>sums;
		sums[0] = true;
		for( int j = i; j <= n; ++j )
		{
			vector< int >s;
			for( auto [x, c]: sums )
				s.pb( x );
			for( int k: s )
				sums[k + a[j]] = true;
			int sum = p[j] - p[i - 1];
			if( sum & 1 )
				continue;
			if( sums[sum / 2] )
				ans[j - i + 1]++;
		}
	}
	vector< int >v;
	for( int i = 1; i <= n; ++i )
	{
		if( ans[i] == n - i + 1 )
			v.pb( i );
		ans[i] = 0;
	}
	cout <<sz(v) <<' ';
	for( int i: v )
		cout <<i <<' ';
	cout <<nl;
}
signed main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    // freopen("input.txt", "r", stdin);
    // freopen("output.txt", "w", stdout);
    int T = 1;
    cin >>T;
    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... |