Submission #333676

#TimeUsernameProblemLanguageResultExecution timeMemory
333676tengiz05Longest beautiful sequence (IZhO17_subsequence)C++17
23 / 100
59 ms748 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define FASTIO ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); #define all(x) (x).begin(), (x).end() #define pb push_back #define pii pair<int, int> #define ff first #define ss second #define PI acos(-1) #define ld long double const int mod = 1e9+7, N = 5005; int msb(int val){return sizeof(int)*8-__builtin_clzll(val);} int a[N], n, m, k[N]; #define count __builtin_popcountll int dp[N]; int par[N]; void solve(int test_case){ int i, j; cin >> n; for(i=1;i<=n;i++){ cin >> a[i]; } for(i=1;i<=n;i++){ cin >> k[i]; } vector<int> ans; for(i=1;i<=n;i++){ dp[i] = 1; } for(i=1;i<n;i++){ for(j=i+1;j<=n;j++){ if(count(a[i]&a[j]) == k[j]){ if(dp[j] < dp[i]+1){ dp[j] = dp[i]+1; par[j] = i; } } } } int beg=-1, mx=-1; for(i=1;i<=n;i++){ if(mx < dp[i]){ mx = max(mx, dp[i]); beg = i; } } assert(mx != -1); while(beg != 0){ ans.pb(beg); beg = par[beg]; } reverse(all(ans)); cout << mx << '\n'; for(auto x : ans)cout << x << ' '; cout << '\n'; return; } signed main(){ FASTIO; #define MULTITEST 0 #if MULTITEST int ___T; cin >> ___T; for(int T_CASE = 1; T_CASE <= ___T; T_CASE++) solve(T_CASE); #else solve(1); #endif 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...