Submission #1107741

# Submission time Handle Problem Language Result Execution time Memory
1107741 2024-11-02T04:31:30 Z vjudge1 Kpart (eJOI21_kpart) C++17
30 / 100
2000 ms 2112 KB
#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 = 2e5+ 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 time Memory Grader output
1 Correct 43 ms 1872 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 134 ms 1872 KB Output is correct
2 Correct 243 ms 1872 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 460 ms 2020 KB Output is correct
2 Correct 847 ms 2048 KB Output is correct
3 Correct 826 ms 1988 KB Output is correct
4 Correct 1142 ms 2052 KB Output is correct
5 Correct 1687 ms 2112 KB Output is correct
6 Execution timed out 2066 ms 2096 KB Time limit exceeded
7 Halted 0 ms 0 KB -