제출 #1318207

#제출 시각아이디문제언어결과실행 시간메모리
1318207jesusargKpart (eJOI21_kpart)C++20
30 / 100
2095 ms448 KiB
#include <bits/stdc++.h> #define pb push_back #pragma GCC target("avx2,bmi,bmi2") #pragma GCC optimize("Ofast,unroll-loops") using namespace std; bitset<50001> dp; vector<int> vet(1005),pref(1005); int n; bool can(int k){ for(int i = 0; i <= n-k; i++){ if((pref[i+k]-pref[i])&1) return 0; } for(int i = 0; i <= n-k; i++) { int sum = pref[i+k]-pref[i]; dp.reset(); dp[0]=1; for(int j = i; j < i+k; j++){ if(vet[j]>sum/2){ continue; } dp|=(dp<<vet[j]); if(dp[sum/2]){ break; } } if(!dp[sum/2]){ return 0; } } return 1; } int32_t main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int t; cin >> t; while(t--){ cin>> n; for(int i = 0; i < n; i++){ cin >> vet[i]; } pref[0]=0; for(int i = 0; i < n; i++){ pref[i+1]=pref[i]+vet[i]; } vector<int> ans; for(int k = 1; k <= n; k++) { if(can(k)) { ans.pb(k); } } cout << ans.size() << ' '; for(auto i: ans) cout << i << ' '; cout << '\n'; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...