为什么全RE了呀QWQ
查看原帖
为什么全RE了呀QWQ
258196
CNF_Acceptance楼主2020/10/5 17:11
#include<bits/stdc++.h>
using namespace std;
inline int read() {
	int x=0,f=1;char c=getchar();
	while(!isdigit(c)&&c!='-') c=getchar();
	if(c=='-') f=0,c=getchar();
	while(isdigit(c)) x=(x<<1)+(x<<3)+(c^48),c=getchar();
	return f?x:-x;
}
inline void write(register int x){
	if(x<0) {
		putchar('-');
		x=-x;
	}
	if(x>9) write(x/10);
	putchar(x%10+'0');
}
const int N=2e5+5;
struct tree {
	int l,r,sz;
	tree(){
		l=r=sz=0;
	}
}tr[N<<5];
int tot,a[N],tp[N],rt[N<<5];
int insert(int pre,int l,int r,int x) {
	int p=++tot;
	tr[p].l=tr[pre].l;
	tr[p].r=tr[pre].r;
	tr[p].sz=tr[pre].sz+1;
	int mid=(l+r)>>1;
	if(l<r) {
		if(x<=mid) {
			tr[p].l=insert(tr[pre].l,l,mid,x);
		} else {
			tr[p].r=insert(tr[pre].r,mid+1,r,x);
		}
	}
	return p;
}
int que(int t1,int t2,int l,int r,int k) {
	if(l==r) return l;
	int sz=tr[tr[t2].l].sz-tr[tr[t1].l].sz;
	int mid=(l+r)>>1;
	if(sz>=k) {
		que(tr[t1].l,tr[t2].l,l,mid,k);
	} else {
		que(tr[t1].r,tr[t2].r,mid+1,r,k-sz);
	}
}
int build(int l,int r) {
	int p=++tot;
	tr[p].sz=0;
	int mid=(l+r)/2;
	if(l<r) {
		tr[p].l=build(l,mid);
		tr[p].r=build(mid+1,r);
	}
	return p;
}
int main() {
	int n=read(),m=read();
	for(int i=1;i<=n;i++) {
		a[i]=read();
		tp[i]=a[i];
	}
	sort(tp+1,tp+n+1);
	int size=unique(tp+1,tp+n+1)-tp-1;
	rt[0]=build(1,size);
	for(int i=1;i<=n;i++) {
		int p=lower_bound(tp+1,tp+size+1,a[i])-tp;
		rt[i]=insert(rt[i-1],1,size,p);
	}
	while(m--) {
		int l=read(),r=read(),k=read();
		write(tp[que(rt[l-1],rt[r],1,size,k)]);
		puts("");
	}
	return 0; 
}
2020/10/5 17:11
加载中...