import
java.util.*;
class
GFG {
public
static
int
findMinimumPrice(List<Integer> price)
{
int
n = price.size();
List<Long> prefixSum =
new
ArrayList<>();
for
(
int
i =
0
; i < n; i++) {
if
(i -
1
>=
0
) {
prefixSum.add(prefixSum.get(i -
1
)
+ price.get(i));
}
else
{
prefixSum.add((
long
)price.get(i));
}
}
Map<Integer, List<Integer> > idxs =
new
HashMap<>();
for
(
int
i =
0
; i < n; i++) {
int
value = price.get(i);
if
(!idxs.containsKey(value)) {
idxs.put(value,
new
ArrayList<>());
}
idxs.get(value).add(i);
}
long
INF = Long.MAX_VALUE;
long
res = INF;
for
(Map.Entry<Integer, List<Integer> > entry :
idxs.entrySet()) {
int
key = entry.getKey();
List<Integer> value = entry.getValue();
int
m = value.size();
for
(
int
i =
0
; i < m; i++) {
if
(i +
1
< m) {
int
leftIndex = value.get(i);
int
rightIndex = value.get(i +
1
);
res = Math.min(
res, prefixSum.get(rightIndex)
- (leftIndex -
1
>=
0
? prefixSum.get(
leftIndex -
1
)
:
0
));
}
}
}
return
res == INF ? -
1
: (
int
)res;
}
public
static
void
main(String[] args)
{
List<Integer> prices
= Arrays.asList(
1
,
3
,
2
,
2
,
2
,
3
);
int
minPrice = findMinimumPrice(prices);
if
(minPrice == -
1
) {
System.out.println(
"No minimum price found."
);
}
else
{
System.out.println(
"Minimum price: "
+ minPrice);
}
}
}