# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1269061 | tryharderforioi100 | Longest beautiful sequence (IZhO17_subsequence) | C11 | 10 ms | 15944 KiB |
#include <stdio.h>
typedef long long ll;
#define max(a, b) (((a) > (b)) ? (a) : (b))
ll pre[2000005];
int main()
{
ll t=1;
//cin>>t;
while(t--)
{
ll n;
scanf("%lld",&n);
ll a[n],b[n],i;
for(i=0;i<n;i++)
{
scanf("%lld",&a[i]);
}
for(i=0;i<n;i++)
{
scanf("%lld",&b[i]);
}
for(i=0;i<2000000;i++)
{
pre[i]=__builtin_popcount(i);
}
ll dp[n],prev[n];
for(i=0;i<n;i++)
{
dp[i]=1;
prev[i]=-1;
}
ll val=0;
for(i=1;i<n;i++)
{
ll j;
for(j=i-1;j>=max(0LL,i-3000);j--)
{
if(pre[a[i]&a[j]]==b[i]&&dp[i]<dp[j]+1)
{
dp[i]=dp[j]+1;
prev[i]=j;
}
}
val=max(val,dp[i]);
}
for(i=0;i<n;i++)
{
if(dp[i]==val)
{
break;
}
}
ll ans[val];
ll cur=val-1;
while(i!=-1)
{
ans[cur]=i+1;
i=prev[i];
cur--;
}
printf("%lld\n",val);
for(i=0;i<val;i++)
{
printf("%lld ",ans[i]);
}
printf("\n");
}
return 0;
}
// Author: tryharderforioi100
Compilation message (stderr)
# | 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... |