Submission #1089412

#TimeUsernameProblemLanguageResultExecution timeMemory
1089412vjudge1Kpart (eJOI21_kpart)C++17
0 / 100
29 ms348 KiB
#pragma GCC optimize("O3,unroll-loops") #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt") #include<bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #define ll int #define F first #define S second #define ull unsigned long long #define db double #define ldb long double #define pb push_back #define pf push_front #define ppb pop_back #define ppf pop_front #define yes cout<<"YES\n" #define no cout<<"NO\n" #define ordered_set tree<ll,null_type,less<ll>,rb_tree_tag,tree_order_statistics_node_update> #define all(x) x.begin(), x.end() const int mod = 1e9 + 7; const int N = 100001; using namespace std; using namespace __gnu_pbds; ll n, m, a, b, c, d, e, p[N], pr[N], dp[N], ans[N]; vector <ll> v; ll gcd (ll a, ll b){while (a > 0 && b > 0){if (a >= b){a %= b;}else{b %= a;}}return a + b;} ll binpow (ll a, ll b){ a %= mod;if (b == 0){return 1;} else if (b % 2 == 1){ return binpow (a, b - 1) % mod * a % mod; } else{ ll t = binpow (a, b / 2) % mod; return t * t % mod; } } signed main (){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); ll tt = 1; cin >> tt; while (tt--){ cin >> n; for (int i = 1; i <= n; i++){ cin >> p[i]; pr[i] = pr[i - 1] + p[i]; ans[i] = 1; } ans[1] = 0; dp[p[1]] = 1; for (int i = 2; i <= n; i++){ dp[0] = i; dp[p[i]] = i; for (int y = pr[n]; y >= p[i]; y--){ dp[y] = max (dp[y], dp[y - p[i]]); } a = p[i]; for (int y = i - 1; y >= 1; y--){ a += p[y]; if (a % 2 == 1 || dp[a / 2] < y){ ans[i - y + 1] = 0; } } } for (int i = 1; i <= n; i++){ if (ans[i]){ v.pb (i); } } cout << v.size() << ' '; for (auto i: v){ cout << i << ' '; } cout << '\n'; v.clear(); for (int i = 0; i <= pr[n]; i++){ dp[i] = 0; } } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...