Submission #1257231

#TimeUsernameProblemLanguageResultExecution timeMemory
1257231dostsLongest beautiful sequence (IZhO17_subsequence)C++20
0 / 100
69 ms180996 KiB
#include <bits/stdc++.h> #pragma GCC optimize("O3,unroll-loops") #pragma GCC target("avx2") #define int long long #define alperen_t int32_t #define pii pair<int,int> #define vi vector<int> #define ff first #define ss second #define sp << " " << #define all(x) x.begin(),x.end() #define big(x) ((int)(x.size())) using namespace std; const int MOD = 998244353, inf = 1e18; const int N = 5e3+10; pii tut[(1<<10)][(1<<10)][11];//solu böyle sağı şuna bu uzaklıkta void solve() { int n; cin >> n; vi a(n+1); for (int i=1;i<=n;i++) cin >> a[i]; int lim = (1<<10); for (int i = 0;i<lim;i++) for (int j = 0;j<lim;j++) for (int k = 0;k<=10;k++) tut[i][j][k] ={-inf,-1}; vi dp(n+1,1),go(n+1,-1); for (int i=1;i<=n;i++) { int k; cin >> k; int sol = a[i] >> 10; int sag = a[i]&1023; for (int j = 0;j<lim;j++){ int ort = __builtin_popcountll(j&sol); int rem = k-ort; if (rem < 0) continue; if (tut[j][sag][rem].ff+1 > dp[i]) { dp[i] = tut[j][sag][rem].ff+1; go[i] = tut[j][sag][rem].ss; } } for (int j = 0;j<lim;j++) { int ortak = __builtin_popcountll(sag&j); if (dp[i] > tut[sol][j][ortak].ff) { tut[sol][j][ortak].ff = dp[i]; tut[sol][j][ortak].ss = i; } } } vi lmao; auto mx = max_element(1+all(dp)); int ptr = mx-dp.begin(); vi v; while (1) { v.push_back(ptr); if (dp[ptr] == 1) break; ptr = go[ptr]; } reverse(all(v)); cout << big(v) << '\n'; for (auto it : v) cout << it << ' '; cout << '\n'; } signed main() { ios_base::sync_with_stdio(0); cin.tie(0); #ifdef Dodi freopen("in.txt", "r", stdin); freopen("out.txt", "w", stdout); #endif int t = 1; //cin >> t; while (t --> 0) solve(); #ifdef Dodi cerr << "TIME TAKEN: " << (double)clock()/(double)CLOCKS_PER_SEC << "seconds!\n"; #endif }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...