제출 #1128247

#제출 시각아이디문제언어결과실행 시간메모리
1128247alimkhanKpart (eJOI21_kpart)C++20
10 / 100
2093 ms1556 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], pref[maxn]; bool ok[maxn]; map <int, bool> dp; void press_F_() { cin >> n; for (int i = 1; i <= n; i++) { cin >> a[i]; } for (int k = 2; k <= n; k++) { ok[k] = 1; } for (int i = 1; i <= n; i++) { int mx = a[i]; int sum = 0; dp.clear(); dp[0] = 1; for (int j = i; j <= n; j++) { sum += a[j]; for (auto to: dp) { if (to.ss == 0) continue; dp[to.ff - a[j]] = 1; } mx = max(mx, a[j]); if (sum % 2 != 0 || sum / 2 < mx) { ok[j - i + 1] = 0; } else { if (ok[j - i + 1] == 1 && dp.count(-sum / 2) == 0) { ok[j - i + 1] = 0; } } } } 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...