제출 #809709

#제출 시각아이디문제언어결과실행 시간메모리
809709makanhuliaLongest beautiful sequence (IZhO17_subsequence)C++17
7 / 100
6066 ms484 KiB
#include<bits/stdc++.h>
#define ll long long
#define fi first
#define sec second
#define pb push_back
#define pqueue priority_queue
#define int long long
#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;
vector<int> vec,ans;
int a[100005],k[100005];
int biton(int x,int y){
  int temp=x&y;
  int sum=0;
  for(int i=25;i>=0;i--){
    if(pow(2,i)<=temp){
      temp-=pow(2,i);
      sum++;
    }
  }
  return sum;
}
void dp(int x,int subl){
//  cout<<x<<" "<<subl<<endl;
  vec.pb(x);
  for(int i=x+1;i<=n;i++){
    if(biton(a[i],a[x])==k[i]){
      dp(i,subl+1);
    }
  }
  if(subl>tp){
    ans.clear();
    for(auto i : vec){
      ans.pb(i);
    }
    tp=max(tp,subl);
  }
  vec.pop_back();
}
main(){
  supercepat;
  cin>>n;
  for(int i=1;i<=n;i++) cin>>a[i];
  for(int i=1;i<=n;i++) cin>>k[i];
  for(int i=1;i<=n;i++) dp(i,1);
  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
*/


컴파일 시 표준 에러 (stderr) 메시지

subsequence.cpp:43:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   43 | main(){
      | ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...