import
java.util.ArrayList;
import
java.util.List;
public
class
Main {
static
List<Integer>
solveQueries(
int
N,
int
num, List<Integer> A,
List<List<Integer> > Q)
{
List<Integer> ans =
new
ArrayList<>();
List<List<Integer> > pre =
new
ArrayList<>();
for
(
int
i =
0
; i <= N; i++) {
pre.add(
new
ArrayList<>());
for
(
int
j =
0
; j <= N; j++) {
pre.get(i).add(
0
);
}
}
for
(
int
i =
0
; i < N; i++) {
int
cnt =
0
;
for
(
int
j = i; j < N; j++) {
if
(A.get(i).equals(A.get(j))) {
cnt++;
}
}
pre.get(i).set(cnt, pre.get(i).get(cnt) +
1
);
}
for
(
int
i =
0
; i < N +
1
; i++) {
for
(
int
j =
1
; j < N; j++) {
pre.get(j).set(i,
pre.get(j).get(i)
+ pre.get(j -
1
).get(i));
}
}
for
(
int
i =
0
; i < num; i++) {
int
L = Q.get(i).get(
0
);
int
R = Q.get(i).get(
1
);
int
K = Q.get(i).get(
2
);
ans.add((L ==
0
? pre.get(R).get(K)
: pre.get(R).get(K)
- pre.get(L -
1
).get(K)));
}
return
ans;
}
public
static
void
main(String[] args)
{
int
N =
5
;
int
num =
3
;
List<Integer> A = List.of(
1
,
1
,
3
,
4
,
3
);
List<List<Integer> > Q
= List.of(List.of(
0
,
2
,
2
), List.of(
0
,
2
,
1
),
List.of(
0
,
4
,
2
));
List<Integer> result = solveQueries(N, num, A, Q);
for
(
int
i =
0
; i < num; i++) {
System.out.println(
"Query "
+ (i +
1
) +
": "
+ result.get(i));
}
}
}