头文件:
#include<algorithm>
用法:
nth_element(a+l,a+l+k-1,a+r+1,cmp);
nth_element(a+l,a+l+k-1,a+r+1);
效果
将数组a,将区间l~r按cmp排序按值第k小的值放在l+k-1位置上。(如 1,1,3) 第一小的数是1,第二小的数是3.
排序后l~(l+k-2)的值都比a[l+k-1]小,(l+k) ~ r的都比a[l+k-1]大,但是不保证顺序
原理
原理就是快排,时间复杂度O(n)
例题:处女座的签到题
题意:输出面积第k大的三角形:
#include<bits/stdc++.h>
using names