CF830B Cards Sorting

题目描述

Vasily 有一副包含 $n$ 张牌的牌堆。每张牌上写有一个整数,这个整数在 $1$ 到 $100000$ 之间(包括 $1$ 和 $100000$)。可能有些牌上的数字是相同的。 Vasily 决定对这些牌进行排序。为此,他不断地从牌堆顶部拿出一张牌,如果这张牌上的数字等于当前牌堆中所有牌上的最小数字,则将该牌移出牌堆;否则,他会把这张牌放到牌堆的底部,然后继续拿下一张顶部的牌,如此反复。整个过程会在牌堆中没有牌时结束。你可以假定 Vasily 始终知道当前牌堆中最小的数字,但不知道这些数字在具体哪些牌上。 请你计算 Vasily 总共从牌堆顶端拿牌的次数。

输入格式

第一行包含一个整数 $n$($1 \leq n \leq 100000$),表示牌堆中的牌数。 第二行包含 $n$ 个整数 $a_{1}, a_{2}, \dots, a_{n}$($1 \leq a_{i} \leq 100000$),其中 $a_{i}$ 表示从顶部数第 $i$ 张牌上的数字。

输出格式

输出 Vasily 总共从牌堆顶部拿牌的次数。

说明/提示

在第一个样例中,Vasily 首先查看了牌堆顶的数字 $6$,将其放到牌堆底部;然后查看了数字 $3$ 的牌,再次放到底部;接着拿到数字 $1$,由于此时 $1$ 是剩余牌中最小的数字,于是将这张牌移出。之后牌堆从顶到底的顺序变为 $[2,6,3]$。然后 Vasily 查看顶牌上的数字 $2$,同理将其移出。之后牌堆为 $[6,3]$。Vasily 查看 $6$,放到底部,再查看 $3$ 并移出。最后只剩下一张 $6$,Vasily 查看并移出。因此,他总共查看了 $7$ 张牌。 由 ChatGPT 5 翻译