Submission #692202

#TimeUsernameProblemLanguageResultExecution timeMemory
692202tolbiLongest beautiful sequence (IZhO17_subsequence)C++17
40 / 100
114 ms7664 KiB
#pragma optimize("Bismillahirrahmanirrahim") //█▀█─█──█──█▀█─█─█ //█▄█─█──█──█▄█─█■█ //█─█─█▄─█▄─█─█─█─█ //Allahuekber //ahmet23 orz... //Sani buyuk Osman Pasa Plevneden cikmam diyor. //FatihSultanMehmedHan //YavuzSultanSelimHan //AbdulhamidHan #define author tolbi #include <bits/stdc++.h> #ifdef LOCAL #include "23.h" #endif #define int long long #define endl '\n' #define vint(x) vector<int> x #define deci(x) int x;cin>>x; #define decstr(x) string x;cin>>x; #define cinarr(x) for (auto &it : x) cin>>it; #define coutarr(x) for (auto &it : x) cout<<it<<" ";cout<<endl; #define sortarr(x) sort(x.begin(),x.end()) #define sortrarr(x) sort(x.rbegin(),x.rend()) #define det(x) cout<<"NO\0YES"+x*3<<endl; #define INF LONG_LONG_MAX #define rev(x) reverse(x.begin(),x.end()); #define ios ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); #define tol(bi) (1LL<<((int)(bi))) const int MOD = 1e9+7; using namespace std; mt19937 ayahya(chrono::high_resolution_clock().now().time_since_epoch().count()); int32_t main(){ ios; int t=1; int tno = 0; if (!t) cin>>t; while (t-(tno++)){ deci(n); bool debmod = false; if (n>5000 || debmod){ vector<int> pos(256,-1); vector<int> dp(n,1); vector<int> gel(n,-1); vint(arr(n)); cinarr(arr); vint(barr(n)); cinarr(barr); for (int i = 0; i < n; i++){ for (int j = 0; j < 256; j++){ if (__builtin_popcount(arr[i]&j)==barr[i]){ if (pos[j]==-1) continue; if (dp[pos[j]]+1>dp[i]){ gel[i]=pos[j]; dp[i]=dp[pos[j]]+1; } } } if (pos[arr[i]]==-1) pos[arr[i]]=i; if (dp[pos[arr[i]]]<dp[i]) pos[arr[i]]=i; } vector<int> ansarr; int mava = *max_element(dp.begin(),dp.end()); for (int i = 0; i < n; i++){ if (dp[i]==mava){ while (i!=-1){ ansarr.push_back(i+1); i=gel[i]; } break; } } rev(ansarr); cout<<ansarr.size()<<endl; coutarr(ansarr); } else { vint(arr(n)); cinarr(arr); vint(barr(n)); cinarr(barr); vector<int> dp(n,1); vector<int> gel(n,-1); for (int i = 0; i < n; i++){ gel[i]=i; for (int j = 0; j < i; j++){ if (__builtin_popcount(arr[i]&arr[j])==barr[i]){ if (dp[j]+1>dp[i]){ dp[i]=dp[j]+1; gel[i]=j; } } } } cout<<*max_element(dp.begin(),dp.end())<<endl; int mava = *max_element(dp.begin(),dp.end()); vector<int> ansarr; for (int i = 0; i < n; i++){ if (dp[i]==mava){ while (i!=gel[i]){ ansarr.push_back(i+1); i=gel[i]; } ansarr.push_back(i+1); break; } } rev(ansarr); coutarr(ansarr); } } }

Compilation message (stderr)

subsequence.cpp:1: warning: ignoring '#pragma optimize ' [-Wunknown-pragmas]
    1 | #pragma optimize("Bismillahirrahmanirrahim")
      |
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...