흥미로운 수
시간 제한3초메모리 제한1024 MB
정수 n개와 k가 주어졌을 때, 모든 두 원소의 XOR 값이 k 이하가 되는 부분수열의 최대 길이를 구합니다.
문제
비트 배타적 논리합(bitwise exclusive or), 줄여서 XOR은 로 나타내는 연산으로, 두 정수의 대응하는 비트끼리 XOR을 계산한다. , , 의 번째 이진 자릿수를 각각 라 하고 이면, 이다.
양의 정수 가 주어진다. 정수들의 수열은 임의의 두 원소의 XOR 값이 이하이면 흥미롭다.
수열 이 주어졌을 때, 흥미로운 부분수열의 최대 길이를 구하라. 부분수열은 주어진 수열에서 원소를 0개 이상 지워서 얻을 수 있는 수열이다.
입력
첫 줄에 테스트 케이스의 수 ()가 주어진다. 각 테스트 케이스가 이어서 주어진다.
각 테스트 케이스의 첫 줄에는 두 정수 , (, )가 주어진다. 각각 수열의 길이와, 수열에서 고른 두 원소의 XOR 최댓값의 상한이다.
둘째 줄에는 주어진 수열인 음이 아닌 정수 ()이 주어진다.
모든 테스트 케이스에 대한 의 합은 을 넘지 않고, 의 합은 을 넘지 않는다.
출력
각 테스트 케이스마다 주어진 수열의 흥미로운 부분수열 길이의 최댓값을 한 줄에 출력한다.
힌트
원소 3, 9, 10, 3으로 이루어진 부분수열은 흥미롭다. 모든 쌍의 XOR 값이 11 이하이기 때문이다. 예를 들어 이다. 원소가 5개인 흥미로운 부분수열은 없다. 예를 들어 는 이므로 흥미롭지 않다.