记录编号 252921 评测结果 AAAAAAAAAA
题目名称 区间权最大 最终得分 100
用户昵称 Gravatar神利·代目 是否通过 通过
代码语言 C++ 运行时间 0.538 s
提交时间 2016-04-21 11:08:36 内存使用 2.24 MiB
显示代码纯文本
#include<stdio.h>
#include<algorithm>
inline void in(int &TEMP){int EPX;for(TEMP=getchar();TEMP<48||TEMP>57;TEMP=getchar());for(TEMP^=48,EPX=getchar();EPX<58&&EPX>47;EPX=getchar())TEMP=(TEMP<<3)+(TEMP<<1)+(EPX^48);}
inline int MAX(int A,int B){return A>B?A:B;}
int n,m,R,ans[100010],t[200010];
struct line{int l,r,w;}o[100010],q[100010];
inline bool comp(line a,line b){return a.l<b.l;}
inline void add(int x,int w){
	for(;x<=R;x+=x&-x)t[x]=MAX(t[x],w);
}
inline int ask(int x){
	int mx=0;
	for(;x;x-=x&-x)mx=MAX(t[x],mx);
	return mx;
}
bool work(){
	freopen("max.in","r",stdin);
	freopen("max.out","w",stdout);
	in(n),in(m);
	for(int i=1;i<=n;++i)in(o[i].l),in(o[i].r),in(o[i].w),R=MAX(R,o[i].r);
	std::sort(o+1,o+n+1,comp);
	for(int i=1;i<=m;++i)in(q[i].l),in(q[i].r),R=MAX(R,q[i].r),q[i].w=i;
	std::sort(q+1,q+m+1,comp);
	for(int i=R,j=n,k=m;i;--i){
		while(j&&o[j].l==i)add(o[j].r,o[j].w),--j;
		while(k&&q[k].l==i)ans[q[k].w]=ask(q[k].r),--k;
	}
	for(int i=1;i<=m;++i)printf("%d\n",ans[i]);
	//while(1);
}
bool tt=work();
main(){;}