Submission #1107742

#TimeUsernameProblemLanguageResultExecution timeMemory
1107742vjudge1Kpart (eJOI21_kpart)C++17
100 / 100
1093 ms1344 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define nn "\n"; #define pb push_back #define all(v) (v).begin() , (v).end() const int N = 1e5+ 4; int dp[N] , bad[N]; int n , T , q , m ; signed main(){ ios_base::sync_with_stdio(0) , cin.tie(0); cin>> T; while(T--){ cin>> n ; int a[n+1] , p[n+1]; p[0] =0 ; for(int i=1 ; i <= n ; i++){ cin>>a[i]; bad[i] =0 ; p[i] = p[i-1]+a[i]; } for(int i= 1 ; i <= n ;i++){ for(int j = N; j >= a[i] ; j--){ dp[j] = max(dp[j] , dp[j- a[i]]); } dp[a[i]] = i; for(int k = 1 ; k <= i; k++){ int sum = p[i] - p[i-k]; if(sum % 2 == 1 || dp[sum/2] <i - k + 1)bad[k] = 1 ; } } vector<int>w; for(int i=1 ; i <= n ; i++){ if(!bad[i])w.pb(i); } for(int i=0 ; i< N ; i++)dp[i] =0; sort(all(w)); cout << w.size() << ' ' ; for(auto it:w)cout <<it << ' '; cout << nn } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...