175982025-08-08 01:26:04peti1234Bináris kereséscpp17Futási hiba 0/1008ms1012 KiB
#include <bits/stdc++.h>
using namespace std;
const int c=100005;
int n, sum, t[c], pref[c], dp[c], rossz[c]; 
vector<int> ans;
void solve() {
    cin >> n;
    for (int i=1; i<=n; i++) {
        cin >> t[i];
        pref[i]=pref[i-1]+t[i];
        sum+=t[i];
    }

    for (int i=1; i<=n; i++) {
        dp[0]=i;
        for (int j=sum-t[i]; j>=0; j--) {
            dp[j+t[i]]=max(dp[j+t[i]], dp[j]);
        }
        for (int j=1; j<=i; j++) {
            int ert=pref[i]-pref[j-1], len=i-j+1;
            if (ert%2 || dp[ert/2]<j) rossz[len]=1;
        }
    }
    
    for (int i=1; i<=n; i++) {
        if (!rossz[i]) {
            ans.push_back(i);
        }
        rossz[i]=0;
    }

    cout << ans.size() << " ";
    for (auto x:ans) {
        cout << x << " ";
    }
    cout << "\n";

    ans.clear();
    for (int i=0; i<c; i++) dp[i]=0;
    sum=0;
}
int main() {
    ios_base::sync_with_stdio(false);
    int w;
    cin >> w;
    while (w--) {
        solve();
    }
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/3
1Futási hiba1ms316 KiB
subtask20/4
1Prezentációs hiba8ms1012 KiB
subtask30/16
1Futási hiba1ms316 KiB
subtask40/25
1Futási hiba1ms316 KiB
2Futási hiba1ms316 KiB
3Futási hiba1ms508 KiB
4Futási hiba1ms316 KiB
5Futási hiba1ms508 KiB
subtask50/22
1Futási hiba2ms564 KiB
2Futási hiba2ms564 KiB
3Futási hiba3ms820 KiB
subtask60/30
1Futási hiba1ms508 KiB
2Futási hiba1ms316 KiB