Submission #1302643

#TimeUsernameProblemLanguageResultExecution timeMemory
1302643akshar_7Longest beautiful sequence (IZhO17_subsequence)Pypy 3
23 / 100
6101 ms228660 KiB
from sys import stdin
input = stdin.readline
n = int(input())
a = [int(i) for i in input().split()]
b = [int(i) for i in input().split()]
nb = 20
k = nb>>1
mask = (1<<k)-1
bit_cnt = [[0]*(1<<k) for i in range(1<<k)]
for i in range(1<<k):
  for j in range(1<<k):
    for l in range(k+1):
      bit_cnt[i][j] += ((i&j)>>l)&1
best = []
for i in range(1<<k):
  p = [[0]*(k+1) for i in range(1<<k)]
  best.append(p)
dp = [0]*n
for j in range(n):
  m = a[j]
  x,y = mask&m, m>>k
  prev = 0
  for i in range(1<<k):
    cl = bit_cnt[i][x]
    cr = b[j]-cl
    if 0<=cr<=10:
      prev = max(prev, best[y][i][cr])
  dp[j] = prev+1
  for i in range(1<<k):
    cr = bit_cnt[i][y]
    best[i][x][cr] = max(prev+1, best[i][x][cr])
res = max(dp)
print(res)
ans = []
j = -1
for i in range(n-1, -1, -1):
  if res==dp[i]:
    if j==-1:
      j=i; res-=1
      ans.append(i+1)
    else:
      bc = 0
      for l in range(nb):
        if (a[i]&a[j])&1<<l:
          bc +=1
      if bc==b[j]:
        ans.append(i+1)
        j=i; res-=1
print(*ans[::-1])

Compilation message (stdout)

Compiling 'subsequence.py'...

=======
  adding: __main__.pyc (deflated 48%)

=======
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...