제출 #1128178

#제출 시각아이디문제언어결과실행 시간메모리
1128178alimkhanKpart (eJOI21_kpart)C++20
10 / 100
2094 ms460 KiB
//Bismillahir-Rahmanir-Rahim #include <bits/stdc++.h> using namespace std; #define pb push_back #define ll long long #define ld long double #define dbg(x) cerr << #x << " = " << x << "\n"; #define ff first #define ss second /* #pragma GCC target ("avx2") #pragma GCC optimization ("O3") #pragma comment (linker, "/stack:200000000") #pragma GCC optimize("Ofast") #pragma GCC target ("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native") */ const long long INF = 1e9 + 7; const long long MOD = 1e9 + 7; const int maxn = 1e5 + 20; // const int lg = 20; int n, m, a[maxn]; bool ok[maxn], dp[maxn]; vector <int> v; bool check(int x) { for (int j = 0; j <= x; j++) { dp[j] = 0; } dp[0] = 1; for (auto to: v) { for (int j = x; j >= 0; j--) { if (dp[j] == 1 && j + to <= x) { dp[j + to] = 1; } } } return dp[x]; } void press_F_() { cin >> n; for (int i = 1; i <= n; i++) { cin >> a[i]; } for (int k = 1; k <= n; k++) { ok[k] = 1; } for (int i = 1; i <= n; i++) { v.clear(); int sum = 0; for (int j = i; j <= n; j++) { sum += a[j]; v.pb(a[j]); if (sum % 2 != 0) { ok[j - i + 1] = 0; } else { if (ok[j - i + 1] == 1) { ok[j - i + 1] = check(sum / 2); } } } } int sz = 0; for (int i = 1; i <= n; i++) { if (ok[i] == 1) { sz++; } } cout << sz << " "; for (int i = 1; i <= n; i++) { if (ok[i] == 1) { cout << i << " "; } } cout << '\n'; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int T = 1; cin >> T; for (int _ = 1; _ <= T; ++_) { // cout << "Case " << i << ": "; press_F_(); } //Respa gold 2025 InshAllah // return 0; } /* Maybe not today and tomorrow, but InshAllah one day I will reach cm */ // g++ -std=c++17 main.cpp // ./a.out
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...