Submission #1265511

#TimeUsernameProblemLanguageResultExecution timeMemory
1265511PlayVoltzLongest beautiful sequence (IZhO17_subsequence)C++20
0 / 100
7 ms4168 KiB
#include <cstdio> #include <stdio.h> #include <stdbool.h> #include <iostream> #include <map> #include <vector> #include <climits> #include <stack> #include <string> #include <queue> #include <algorithm> #include <set> #include <unordered_set> #include <unordered_map> #include <cmath> #include <cctype> #include <bitset> #include <iomanip> #include <cstring> #include <numeric> #include <cassert> using namespace std; #define int long long #define pii pair<int, int> #define mp make_pair #define pb push_back #define fi first #define se second pii dp[(1<<10)+5][(1<<10)+5][15]; int32_t main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n; cin>>n; vector<pii> ans(n+1, mp(0, 0)), vect(n+1); for (int i=1; i<=n; ++i)cin>>vect[i].fi; for (int i=1; i<=n; ++i)cin>>vect[i].se; pii mx=mp(0, 0); for (int i=1; i<=n; ++i){ int l=(vect[i].fi>>10), r=(vect[i].fi&((1<<10)-1)); for (int mask=0; mask<(1<<10); ++mask){ int c=vect[i].se-__builtin_popcount(l&mask); if (c<0||c>10)continue; ans[i]=max(ans[i], mp(dp[mask][r][c].fi+1, dp[mask][r][c].se)); } mx=max(mx, mp(ans[i].fi, i)); for (int mask=0; mask<(1<<10); ++mask){ int c=__builtin_popcount(r&mask); dp[l][mask][c]=max(dp[l][mask][c], mp(ans[i].fi, i)); } } stack<int> res; while (mx.se)res.push(mx.se), mx.se=ans[mx.se].se; cout<<res.size()<<"\n"; while (res.size())cout<<res.top()<<" ", res.pop(); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...