import
java.util.HashMap;
import
java.util.Map;
public
class
Main {
public
static
void
main(String[] args) {
int
[] arr = {
1
,
2
,
3
,
3
,
4
,
4
,
5
,
5
};
int
k =
3
;
System.out.println(isPossible(arr, k) ?
"true"
:
"false"
);
}
public
static
boolean
isPossible(
int
[] arr,
int
k) {
int
n = arr.length;
Map<Integer, Integer> notUsed =
new
HashMap<>();
Map<Integer, Integer> opening =
new
HashMap<>();
for
(
int
i =
0
; i < n; i++) {
notUsed.put(arr[i], notUsed.getOrDefault(arr[i],
0
) +
1
);
}
for
(
int
i =
0
; i < n; i++) {
if
(notUsed.get(arr[i]) >
0
) {
if
(opening.getOrDefault(arr[i],
0
) >
0
) {
notUsed.put(arr[i], notUsed.get(arr[i]) -
1
);
opening.put(arr[i], opening.get(arr[i]) -
1
);
opening.put(arr[i] +
1
, opening.getOrDefault(arr[i] +
1
,
0
) +
1
);
}
else
{
for
(
int
j =
1
; j <= k -
1
; j++) {
notUsed.put(arr[i] + j, notUsed.getOrDefault(arr[i] + j,
0
) -
1
);
if
(notUsed.get(arr[i] + j) <
0
)
return
false
;
}
opening.put(arr[i] + k, opening.getOrDefault(arr[i] + k,
0
) +
1
);
}
}
}
return
true
;
}
}