Submission #645717

#TimeUsernameProblemLanguageResultExecution timeMemory
645717Koful123Kpart (eJOI21_kpart)C++17
30 / 100
2091 ms383496 KiB
#include <bits/stdc++.h> using namespace std; #define double long double #define endl "\n" #define pb push_back #define ff first #define ss second #define mod 998244353 #define all(x) (x).begin(), (x).end() #define rall(x) (x).rbegin(), (x).rend() void solve(){ int n,sum = 0; cin >> n; int v[n+1] = {0}; for(int i=1;i<=n;i++){ cin >> v[i]; sum += v[i]; } int dp[n+1][sum + 1]; memset(dp,0,sizeof(dp)); for(int i=1;i<=n;i++){ for(int j=sum;j>=1;j--){ dp[i][j] = dp[i-1][j]; if(j + v[i] <= sum){ dp[i][j+v[i]] = max(dp[i][j+v[i]],dp[i][j]); } } dp[i][v[i]] = max(dp[i-1][v[i]],i); } vector<int> ans; for(int i=1,tot=0;i<=n;tot += v[i],i++){ int ok = 1,sum = tot; for(int j=i;j<=n;j++){ sum -= v[j-i],sum += v[j]; if(sum % 2 || dp[j][sum / 2] <= j-i){ ok = 0;break; } } if(ok) ans.pb(i); } cout << ans.size() << ' '; for(int x : ans){ cout << x << ' '; } cout << endl; } signed main(){ ios::sync_with_stdio(0); cin.tie(0); int 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...