#35996. 冒泡排序生成图

冒泡排序生成图

暂无测试数据。

蒜头最近学习了冒泡排序,他用冒泡序列把一个排列 $a_1$, $a_2$, $\cdots$, $a_n$ 排成升序。

他觉得冒泡排序太无聊了,他想在冒泡排序的基础上构建一张图,初始的时候图有 $n$ 个顶点 $0$ 条边。他在冒泡排序过程中嵌入一些生成图上边的代码,代码框架如下。

int bubbleSortGraph(int n) {
    // 建一个 n 个点 0 条边的图 G
    bool swapped = false;
    do {
        swapped = false;
        for (int i = 1; i < n; i++) {
            if (a[i] > a[i + 1]) {
                // 在 a[i] 和 a[i + 1] 之间连一条边
                swap(a[i], a[i + 1]);
                swapped = true;
            }
        }
    } while (swapped)
    /* 重复执行直到不再出现交换*/
}

图上的一个独立集定义为图的顶点集 $V$ 的一个子集 $V'$,$V'$ 中任意任意两个顶点之间都没有边存在。最大独立集是指点数最多的独立集。

给定排列 $a$,求出蒜头生成的图上的最大独立集。

输入格式

输入第一行一个整数 $n(2 \le n \le 1000)$。

接下里一行输入 $n$ 个整数 $a_1$, $a_2$, $\cdots$, $a_n$$(1 \le a_i \le n)$。 ### 输出格式 输出一个整数表示最大独立集的点的个数。

3
3 1 2
2