Submission #163753

#TimeUsernameProblemLanguageResultExecution timeMemory
163753MvCLongest beautiful sequence (IZhO17_subsequence)C++11
23 / 100
58 ms1988 KiB
#pragma GCC target("avx2") #pragma GCC optimization("O3") #pragma GCC optimization("unroll-loops") #include <bits/stdc++.h> #define rc(x) return cout<<x<<endl,0 #define pb push_back #define mkp make_pair #define in insert #define er erase #define fd find #define fr first #define sc second typedef long long ll; typedef long double ld; const ll INF=0x3f3f3f3f3f3f3f3f; const ll llinf=(1LL<<62); const int inf=(1<<30); const int nmax=2e6+50; const int mod=1e9+7; using namespace std; int n,i,a[nmax],k[nmax],ls[nmax],mx,j; pair<int,int>f[nmax],g[nmax]; vector<int>rs; int main() { //freopen("sol.in","r",stdin); //freopen("sol.out","w",stdout); //mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); ios_base::sync_with_stdio(false);cin.tie(0);cerr.tie(0);cout.tie(0); cin>>n; for(i=1;i<=n;i++)cin>>a[i]; for(i=1;i<=n;i++)cin>>k[i]; for(i=1;i<=n;i++)f[i]=mkp(1,i); if(n<=5000) { for(i=1;i<=n;i++) { for(j=1;j<i;j++) { if(__builtin_popcount(a[j]&a[i])==k[i] && f[j].fr>=f[i].fr)f[i]=mkp(f[j].fr+1,j); } if(f[mx].fr<f[i].fr)mx=i; } } else { for(i=1;i<=n;i++) { for(j=0;j<(1<<8);j++) { if(!ls[j])continue; if(__builtin_popcount(j&a[i])==k[i] && g[j].fr>=f[i].fr)f[i]=mkp(g[j].fr+1,ls[j]); } if(f[mx].fr<f[i].fr)mx=i; g[a[i]]=max(g[a[i]],mkp(f[i].fr,i)); ls[a[i]]=i; } } while(1) { rs.pb(mx); if(f[mx].fr==1)break; mx=f[mx].sc; } reverse(rs.begin(),rs.end()); cout<<(int)rs.size()<<endl; for(i=0;i<(int)rs.size();i++)cout<<rs[i]<<" "; cout<<endl; return 0; }

Compilation message (stderr)

subsequence.cpp:2:0: warning: ignoring #pragma GCC optimization [-Wunknown-pragmas]
 #pragma GCC optimization("O3")
 
subsequence.cpp:3:0: warning: ignoring #pragma GCC optimization [-Wunknown-pragmas]
 #pragma GCC optimization("unroll-loops")
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...