제출 #1347966

#제출 시각아이디문제언어결과실행 시간메모리
1347966almaarmudKpart (eJOI21_kpart)C++20
30 / 100
2096 ms448 KiB
/*
██████╗  █████╗ ███████╗██╗  ██╗██╗██████╗
██╔══██╗██╔══██╗██╔════╝██║  ██║██║██╔══██╗
██████╔╝███████║███████╗███████║██║██║   ██║
██╔══██╗██╔══██║╚════██║██╔══██║██║██║   ██║
██║  ██║██║  ██║███████║██║  ██║██║██████╔╝
╚═╝  ╚═╝╚═╝  ╚═╝╚══════╝╚═╝  ╚═╝╚═╝╚═════╝
*/
#include <bits/stdc++.h>
using namespace std;
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
#define ll long long
#define ull unsigned long long
#define ld long double
#define str string
#define ch char
#define db double
#define pb push_back
#define ff first
#define ss second
#define all(x) (x).begin(),(x).end()
#define rall(x) (x).rbegin(),(x).rend()
#define YES cout<<"YES\n";
#define NO cout<<"NO\n";
#define Bob cout<<"Bob\n";
#define Alice cout<<"Alice\n";
#define ordered_set tree<pair<ll, ll>, null_type,less<pair<ll,ll>>,rb_tree_tag,tree_order_statistics_node_update>
const ll MOD=1e9+7;
const ll INF = 10000000000;

bitset<50001> dp;

bool duzdu(const vector<ll>& v, ll start, ll end) {
    ll sum = 0;
    for (ll i = start; i < end; i++) sum += v[i];
    
    if (sum % 2 != 0) return false;
    ll target = sum / 2;

    dp.reset();
    dp[0] = 1;

    for (ll i = start; i < end; i++) {
        dp |= (dp << v[i]);
        if (dp[target]) return true;
    }
    return dp[target];
}

void solve() {
    ll n;
    if (!(cin >> n)) return;
    vector<ll> v(n);
    for (int i = 0; i < n; i++) {
        cin >> v[i];
    }
    
    vector<ll> ans;
    for (ll k = 1; k <= n; k++) {
        bool ok = true;
        for (ll i = 0; i <= n - k; i++) {
            if (!duzdu(v, i, i + k)) {
                ok = false;
                break;
            }
        }
        if (ok) {
            ans.pb(k);
        }
    }
    
    cout << ans.size();
    for (auto p : ans) cout << " " << p;
    cout << "\n";
}

signed main() {
    ll t = 1;
    cin >> t;
    while (t--) {
        solve();
    }
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...