제출 #631082

#제출 시각아이디문제언어결과실행 시간메모리
631082ZsofiaKeresztelyKpart (eJOI21_kpart)C++14
30 / 100
2070 ms712 KiB
#include <bits/stdc++.h> using namespace std; #pragma GCC optimize ("Ofast") int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); int t, n, s; cin >> t; vector<int> a, lasti, pref; set<int> k; while (t--){ cin >> n; a.assign(n+1, 0); lasti.assign(50001, -1); pref.assign(n+1, 0); k.clear(); s = 0; for (int i=1; i<n+1; i++){ cin >> a[i]; s += a[i]; pref[i] = s; } s /= 2; for (int i=1; i<n+1; i++){ k.insert(i); for (int j=s-a[i]; j>0; j--){ lasti[j + a[i]] = max(lasti[j + a[i]], lasti[j]); } if (a[i] <= s){ lasti[a[i]] = i; } auto cur = k.begin(); for (auto it = k.begin(); it != k.end();){ cur = it++; if ((pref[i] - pref[i - *cur]) % 2 || lasti[(pref[i] - pref[i - *cur]) / 2] < i - *cur + 1){ k.erase(cur); } } } cout << k.size() << " "; for (int x : k){ cout << x << " "; } cout << "\n"; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...