记录编号 |
252921 |
评测结果 |
AAAAAAAAAA |
题目名称 |
区间权最大 |
最终得分 |
100 |
用户昵称 |
神利·代目 |
是否通过 |
通过 |
代码语言 |
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(){;}