Submission #645714

#TimeUsernameProblemLanguageResultExecution timeMemory
645714Koful123Kpart (eJOI21_kpart)C++17
30 / 100
2065 ms101560 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; cin >> n; vector<int> v(n+1,0); for(int i=1;i<=n;i++){ cin >> v[i]; } vector<vector<int>> dp(n+1,vector<int> (1e5 + 5,0)); for(int i=1;i<=n;i++){ for(int j=1e5;j>=1;j--){ dp[i][j] = dp[i-1][j]; if(j + v[i] <= 1e5){ 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;i<=n;i++){ int sum = 0,ok = 1; for(int j=1;j<i;j++){ sum += v[j]; } 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...