Submission #891204

#TimeUsernameProblemLanguageResultExecution timeMemory
891204sleepntsheepKpart (eJOI21_kpart)C++17
100 / 100
1058 ms928 KiB
#include <iostream> #include <bitset> #include <fstream> #include <iomanip> #include <cmath> #include <cassert> #include <cstring> #include <numeric> #include <vector> #include <algorithm> #include <deque> #include <set> #include <utility> #include <array> #include <complex> using namespace std; #define ALL(x) begin(x), end(x) #define ShinLena cin.tie(nullptr)->sync_with_stdio(false); void docase() { int n; cin >> n; vector<int> a(n), dp(50005, -1); bitset<1001> c; for (auto &x : a) cin >> x; for (int sum = 0, i = 0; i < n; ++i) { sum += a[i]; for (int j = 50000; j >= a[i]; --j) { if (j - a[i] >= 0 && dp[j - a[i]] != -1) dp[j] = max(dp[j], dp[j - a[i]]); else if (j - a[i] == 0) dp[j] = i + 1; } for (int sub = sum, j = 0; j <= i; ++j) { if (!(sub & 1) && dp[sub / 2] >= j + 1); else c[i-j+1] = 1; sub -= a[j]; } } cout << n - c.count() << ' '; for (auto i = 1; i <= n; ++i) if (!c[i]) cout << i << ' '; cout << '\n'; } int main() { ShinLena; int T; cin >> T; while (T--) docase(); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...