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...