Submission #163867

#TimeUsernameProblemLanguageResultExecution timeMemory
163867MvCLongest beautiful sequence (IZhO17_subsequence)C++11
40 / 100
6019 ms105476 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=1e5+50; const int mod=1e9+7; using namespace std; int n,a[nmax],k[nmax],x,y,nr,f[nmax],p[nmax],g[1025][1025][25],i,j,mx; vector<int>vc; 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]=1; x=a[i]&((1<<10)-1),y=a[i]>>10; for(j=0;j<(1<<10);j++) { nr=k[i]-__builtin_popcount(y&j); if(f[g[j][x][nr]]>=f[i]) { f[i]=f[g[j][x][nr]]+1; p[i]=g[j][x][nr]; } } for(j=0;j<(1<<10);j++) { nr=__builtin_popcount(x&j); if(f[i]>f[g[y][j][nr]]) { g[y][j][nr]=i; } } if(f[mx]<f[i])mx=i; } while(1) { vc.pb(mx); if(f[mx]==1)break; mx=p[mx]; } reverse(vc.begin(),vc.end()); cout<<(int)vc.size()<<endl; for(i=0;i<(int)vc.size();i++)cout<<vc[i]<<" "; cout<<endl; 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...