This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include<bits/stdc++.h>
#define ll long long
#define fi first
#define sec second
#define pb push_back
#define int long long
#define pqueue priority_queue
#define pii pair<int,int>
#define supercepat ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(0);
//GA AC GA LAKI
using namespace std;
int tc,n,tp,rt;
int a[100005],k[100005];
vector<int> adj[100005],adj2[100005];
int dis[100005];
int vis[100005];
vector<int> ans;
int day;
void backtrack(int x){
ans.pb(x);
for(auto i : adj2[x]){
if(dis[i]==dis[x]-1){
backtrack(i);
break;
}
}
}
void dfs(int x){
vis[x]=day;
for(auto i : adj[x]){
dis[i]=max(dis[i],dis[x]+1);
dfs(i);
}
}
int biton(int x,int y){
int temp=x&y;
int sum=0;
for(int i=21;i>=0;i--){
if(pow(2,i)<=temp){
temp-=pow(2,i);
sum++;
}
}
return sum;
}
void makegrap(){
for(int i=1;i<=n;i++){
for(int j=i+1;j<=n;j++){
if(biton(a[i],a[j])==k[j]){
adj[i].pb(j);
adj2[j].pb(i);
}
}
}
}
main(){
supercepat;
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=1;i<=n;i++) cin>>k[i];
makegrap();
day++;
for(int i=1;i<=n;i++){
if(vis[i]!=day){
dis[i]=1;
dfs(i);
}
if(dis[i]>tp) rt=i;
tp=max(tp,dis[i]);
}
// cout<<rt<<endl;
// for(int i=1;i<=n;i++){
// cout<<dis[i]<<' ';
// }
// cout<<endl;
backtrack(rt);
reverse(ans.begin(),ans.end());
cout<<ans.size()<<endl;
for(auto i : ans) cout<<i<<" ";
cout<<endl;
}
/*
vector vec;
for(i=1;i<=n;i++) dp(i,1) vec.pb(i);
dp(x,subl)
untuk suatu index x, cek i dari x+1 sampai n apabila biton(a[i]&a[x])==k[i] -> dp(i,subl+1)
vec.pop()
if(subl>tp) kita copy arraynya
*/
Compilation message (stderr)
subsequence.cpp:56:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
56 | main(){
| ^~~~
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |