QOJ.ac

QOJ

Time Limit: 2 s Memory Limit: 256 MB Total points: 100

#894. 最長ルーズセグメント

Statistics

リスト $A$ は、$\max(A) + \min(A) > \text{len}(A)$ を満たすとき、loose であると呼ぶ。

今日、Rikka は長さ $n$ のリスト $A$ を手に入れた。彼女は $A$ において、リスト $[A_l, A_{l+1}, \dots, A_r]$ が loose となるような最長のセグメント $[l, r]$ を見つけたいと考えている。

Rikka はリスト $A$ に対して $m$ 回のターンを行う。各ターンにおいて、Rikka は与えられた1つ以上の操作を順番に実行する。各操作はリスト $A$ 内の2つの要素を入れ替えるものである。あなたのタスクは、初期状態および各ターンの終了後における、リスト $A$ の最長の loose セグメントの長さを計算することである。

ターン $i$ における操作は、ターン $(i - 1)$ の結果として得られたリストに対して行われることに注意せよ。

入力

1行目には、2つの整数 $n$ と $m$ ($1 \le n \le 10^6$ かつ $1 \le m \le 30$) が与えられる。

2行目には、初期リスト $A$ を構成する $n$ 個の整数 $A_i$ ($-10^6 \le A_i \le 10^6$) が与えられる。

続いて $m$ 回のターンの説明が続く。各ターンにおいて、1行目にはスワップの回数を表す整数 $k$ ($1 \le k \le 10^6$) が与えられる。続く $k$ 行のそれぞれには、2つの整数 $u_i$ と $v_i$ ($1 \le u_i, v_i \le n$ かつ $u_i \neq v_i$) が与えられ、Rikka はこの操作で $A_{u_i}$ と $A_{v_i}$ を入れ替える。

$\sum k \le 10^6$ であることが保証されている。

出力

1行目に、初期状態における最長の loose セグメントの長さを出力せよ。

続いて $m$ 行を出力せよ。各行には、各ターンの終了後における最長の loose セグメントの長さを出力せよ。

入出力例

入力 1

5 2
1 2 -2 3 4
1
2 3
1
1 2

出力 1

2
3
4

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.