Submission #1271229

#TimeUsernameProblemLanguageResultExecution timeMemory
1271229haithamcoderLongest beautiful sequence (IZhO17_subsequence)C++20
7 / 100
6090 ms8912 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<int, int> pii; const int MOD = 1000000007; const ll LOG = 31; #define db(x) cerr << #x << " = " << x << " | " #define dbg(x) cerr << #x << " = " << x << "\n" #define Algerian ios::sync_with_stdio(0); #define OI cin.tie(NULL); int main() { Algerian OI ll n; cin >> n; vector<ll> a(n), k(n); ll P = 0; for (ll i = 0; i < n; i++) { cin >> a[i]; if (a[i]) P = max(P, 63LL - __builtin_clzll(a[i]) + 1); } for (ll i = 0; i < n; i++) cin >> k[i]; vector<ll> dp(1 << P); ll res = 0, v = -1; vector<ll> par(n + 1, -1); map<ll, ll> idx; for (ll i = 0; i < n; i++) { ll val = 1, x = -1; for (ll mask = 0; mask < (1 << P); mask++) { if (__builtin_popcount(mask & a[i]) != k[i]) continue; if (dp[mask] + 1 > val) { x = idx[mask]; val = dp[mask] + 1; } } par[i] = x; dp[a[i]] = val; idx[a[i]] = i; if (dp[a[i]] > res) { v = i; res = dp[a[i]]; } } vector<ll> ans; for (ll u = v; u != -1; u = par[u]) { ans.push_back(u); } reverse(ans.begin(), ans.end()); res = ans.size(); cout << res << "\n"; for (ll i = 0; i < res; i++) cout << ans[i] + 1 << " \n"[i == res - 1]; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...