제출 #640934

#제출 시각아이디문제언어결과실행 시간메모리
640934alex_2008Kpart (eJOI21_kpart)C++14
30 / 100
2080 ms404 KiB
#include <iostream> #include <vector> #include <algorithm> #include <set> typedef long long ll; using namespace std; const int N = 1e5 + 10; int a[N], cnt[N]; bool Used[N]; void solve() { int n; cin >> n; for (int i = 1; i <= n; i++) { cin >> a[i]; cnt[i - 1] = 0; } Used[0] = true; for (int i = 1; i <= n; i++) { Used[0] = true; for (int i = 1; i < N; i++) Used[i] = false; int cur = 0; for (int j = i; j <= n; j++) { for (int k = cur; k >= 0; k--) if (Used[k]) Used[k + a[j]] = true; cur += a[j]; if (cur % 2 == 0 && Used[cur / 2]) cnt[j - i]++; } } vector <int> ans; for (int i = 0; i < n; i++) { if (cnt[i] == n - i) ans.push_back(i + 1); } cout << ans.size() << " "; for (auto it : ans) cout << it << " "; cout << "\n"; } int main() { int t; cin >> t; while (t--) solve(); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...