Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- typedef long long ll;
- const ll N = 2e5+7;
- vector<ll> divisor[N];
- ll dp[N];
- signed main() {
- ios_base::sync_with_stdio(0); cin.tie(0);
- int tc; cin >> tc;
- for (ll i = 1; i < N; i++) {
- for (ll j = i; j < N; j += i) divisor[j].push_back(i);
- }
- test:
- while (tc--) {
- ll n; cin >> n;
- ll arr[n];
- for (auto &u : arr) {
- cin >> u;
- for (auto &v : divisor[u]) dp[v] = 0;
- }
- for (ll i = n-1; i >= 0; i--) {
- ll d = (divisor[arr[i]].size()+2) / 3;
- ll ans = arr[i];
- for (auto &u : divisor[arr[i]]) {
- if (divisor[u].size() >= d) ans = max(ans, dp[u]+arr[i]);
- }
- for (auto &u : divisor[arr[i]]) dp[u] = max(dp[u], ans);
- }
- cout << dp[1] << "\n";
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement