QOJ.ac

QOJ

時間限制: 1.0 s 記憶體限制: 256 MB 總分: 100 可 Hack ✓

#17741. 졸업하기 전에 해야 할 101가지

统计

Busy Beaver의 4학년 마지막 학기 기말고사 기간이 다가왔고, 그는 신입생 오리엔테이션 때 받은 졸업 전 반드시 해야 할 활동 목록을 떠올렸습니다.

$N$개의 수로 이루어진 배열 $a_1, \ldots, a_N$이 주어지며, 여기서 $a_i$는 $i$번째 활동을 완료했을 때 얻는 즐거움을 나타냅니다.

MIT에서의 제한된 시간 때문에, 그는 이 활동들 중 연속된 부분 구간만을 완료하기로 했습니다. 또한, 최대한의 효과를 얻기 위해 해당 부분 구간은 최소 두 개 이상의 활동을 포함해야 합니다.

기말고사 준비를 미루던 중, 그는 부분 구간의 점수를 매기는 정교한 방법을 생각해 냈습니다. 인덱스 $l$부터 $r$까지의 부분 구간 점수는 해당 구간 내 서로 다른 두 활동의 XOR 값 중 최솟값입니다. 형식적으로, 인덱스 $l$부터 $r$까지의 부분 구간 점수는 $\min\limits_{l \leq i < j \leq r} a_i \oplus a_j$입니다.

Busy Beaver가 가장 좋아하는 숫자는 $K$이므로, 그는 점수가 $K$인 부분 구간의 개수를 계산하고 싶어 합니다. 그를 도와줄 수 있을까요?

입력

첫 번째 줄에는 두 정수 $N$과 $K$가 주어집니다 ($2 \le N \le 10^5$, $0 \le K < 2^{30}$).

두 번째 줄에는 $N$개의 공백으로 구분된 정수 $a_1, \dots, a_N$이 주어집니다 ($1 \le a_i < 2^{30}$).

출력

점수가 $K$인, 크기가 최소 두 개 이상인 연속된 부분 구간의 개수를 하나의 정수로 출력하십시오.

서브태스크

  • ($15$점) $N \leq 5000$.
  • ($10$점) $K = 0$.
  • ($25$점) 배열 $a$는 오름차순으로 정렬되어 있습니다 ($a_{1} \leq \ldots \leq a_{N}$).
  • ($50$점) 추가 제약 조건 없음.

예제

입력 1

5 2
1 3 1 4 5

출력 1

3

참고

다음 세 개의 부분 구간이 카운트되어야 합니다:

  • $l = 1, r = 2$.
  • $l = 2, r = 3$.
  • $l = 2, r = 4$.

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.