为啥全RE啊?数据本地测试没有问题啊……
查看原帖
为啥全RE啊?数据本地测试没有问题啊……
502658
Ray662楼主2022/8/26 23:16
#include <bits/stdc++.h>

//#define int long long
#define _for(i, a, b)  for (int i = (a); i <= (b); i ++ )
#define _all(i, a, b)  for (int i = (a); i >= (b); i -- )

using namespace std;

const int N = 2e5 + 5;
//const int M = ;
//const int mod = ;
//const int inf = ;

int n, q, cnt;
int a[N], b[N], rt[N];
struct segTree { int l, r, sum; } tr[N << 4];

inline void modify(int u, int l, int r, int & id, int k)
{
	id = ++ cnt, tr[id] = tr[k], tr[id].sum ++ ;
	
	if (l == r)  return ;
	
	int mid = (l + r) >> 1;
	if (u <= mid)  modify(u, l, mid, tr[id].l, tr[k].l);
	else  modify(u, mid + 1, r, tr[id].r, tr[k].r);
}

inline int query(int l, int r, int rnk, int id, int k)
{
	if (l == r)  return l;
	
	int mid = (l + r) >> 1;
	int p = tr[tr[k].l].sum - tr[tr[id].l].sum;
	if (rnk <= p)  query(l, mid, rnk, tr[id].l, tr[k].l);
	else  query(mid + 1, r, rnk - p, tr[id].r, tr[k].r);
}

signed main()
{
	ios :: sync_with_stdio(false);
	cin.tie(0), cout.tie(0);
	
	cin >> n >> q;
	_for (i, 1, n)
		cin >> a[i], b[i] = a[i];
	
	sort(b + 1, b + n + 1);
	int m = unique(b + 1, b + n + 1) - b - 1;
	_for (i, 1, n)  a[i] = lower_bound(b + 1, b + m + 1, a[i]) - b;
	
	_for (i, 1, n)  modify(a[i], 1, m, rt[i], rt[i - 1]);
	
	int l, r, x;
	while (q -- )
	{
		cin >> l >> r >> x;
		cout << b[query(1, m, x, rt[l - 1], rt[r])] << endl;
	}
	
	return 0;
}
2022/8/26 23:16
加载中...