@@ -12,10 +12,9 @@ void solve() throws IOException {
12
12
int l = in .nextInt ();
13
13
int r = in .nextInt ();
14
14
int [] a = new int [n ];
15
- long ans = 0 , j = 0 , m , extra = 0 ;
15
+ long ans = 0 , m ;
16
16
Set <Integer > s = new HashSet <>();
17
17
Queue <Integer > q = new LinkedList <>();
18
- List <Integer > chunks = new LinkedList <>();
19
18
20
19
for (int i = 0 ; i < n ; i ++) {
21
20
a [i ] = in .nextInt ();
@@ -24,7 +23,8 @@ void solve() throws IOException {
24
23
for (int i = 0 ; i < n ; i ++) {
25
24
if (s .contains (a [i ])) {
26
25
if (q .size () >= l ) {
27
- chunks .add (q .size ());
26
+ m = Integer .min (q .size (), r );
27
+ ans += (2 *q .size ()-l -m +2 ) * (m -l +1 )/2 ;
28
28
}
29
29
30
30
while (q .peek () != a [i ]) {
@@ -34,7 +34,7 @@ void solve() throws IOException {
34
34
q .poll ();
35
35
if (q .size () >= l ) {
36
36
m = Integer .min (q .size (), r );
37
- extra + = (2 *q .size ()-l -m +2 ) * (m -l +1 )/2 ;
37
+ ans - = (2 *q .size ()-l -m +2 ) * (m -l +1 )/2 ;
38
38
}
39
39
q .add (a [i ]);
40
40
} else {
@@ -44,14 +44,11 @@ void solve() throws IOException {
44
44
}
45
45
46
46
if (q .size () >= l ) {
47
- chunks .add (q .size ());
47
+ m = Integer .min (q .size (), r );
48
+ ans += (2 *q .size ()-l -m +2 ) * (m -l +1 )/2 ;
48
49
}
49
50
50
- for (Integer chunk : chunks ) {
51
- m = Integer .min (chunk , r );
52
- ans += (2 *chunk -l -m +2 ) * (m -l +1 )/2 ;
53
- }
54
- out .println (ans -extra );
51
+ out .println (ans );
55
52
out .flush ();
56
53
}
57
54
0 commit comments