Submission #556091

#TimeUsernameProblemLanguageResultExecution timeMemory
556091errayKpart (eJOI21_kpart)C++17
100 / 100
1081 ms1776 KiB
// author: erray #include <bits/stdc++.h> #ifdef DEBUG #include "debug.h" #else #define debug(...) void(37) #endif using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(0); int TT; cin >> TT; while (TT--) { int N; cin >> N; vector<int> A(N); for (int i = 0; i < N; ++i) { cin >> A[i]; } vector<bool> ok(N, true); vector<int> dp(1, -1); int s = 1; for (int i = 0; i < N; ++i) { s += A[i]; dp.resize(s, -1); for (int j = s - 1; j > A[i]; --j) { dp[j] = max(dp[j], dp[j - A[i]]); } dp[A[i]] = i; int sum = 0; for (int j = i; j >= 0; --j) { sum += A[j]; ok[i - j] = bool(ok[i - j]) && (sum % 2 == 0 && dp[sum / 2] >= j); } } cout << accumulate(ok.begin(), ok.end(), 0) << '\n'; for (int i = 0; i < N; ++i) { if (ok[i]) { cout << i + 1 << ' '; } } cout << '\n'; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...