Files
DataStructureAndAlgorithm/2023206/correct.cpp
2023-11-29 16:26:24 +08:00

35 lines
778 B
C++

#include <stdio.h>
int* stairs = NULL;
bool* visited = NULL;
int M, K, H;
long long total = 0;
int dfs(int start) {
if (visited[start]) {
return 0;
}
visited[start] = true;
for (int i = 1; start + i < M && i <= K; i++) {
if (((stairs[start + i] - stairs[start]) < 0 ? stairs[start] - stairs[start + i] : stairs[start + i] - stairs[start]) <= H) {
total++;
dfs(start + i);
}
}
return 0;
}
int main() {
scanf("%d %d %d", &M , &K, &H);
stairs = new int[M];
visited = new bool[M];
for (int i = 0; i < M ; i++) {
scanf("%d", &stairs[i]);
}
for (int i = 0; i < M; i++) {
if (!visited[i]) {
dfs(i);
}
}
printf("%lld\n", total);
return 0;
}