塔塔携带一件价值为x的礼物参加了一个节日派对。除多多外在场的有n个人,第i个人的当前持有的礼物价值为ai。
塔塔可以和任意当前持有礼物价值比塔塔低的人交换礼物。
用手中的数与数组中的数交换,手中的数一定是越来越小的。同时要让数组中的数单调不减,首先就要让最后一个数最大,而如果最后一个数不是最大,唯一改变它的方法就是与手中的数字进行交换。于是手中的数就变为了最后一个数。对于第n−1,n−2,...个数同理。
于是从最后一个数开始判断,如果比手中数小,那么就进行交换,同时与前面的数比较,如果逆序,则记录该逆序对。
交换后,与前后两个数进行比较,检查能否删除记录过的逆序对。如果最后没有记录中的逆序对,则说明可以实现,否则不能。