记录编号 474379 评测结果 AAATTTTTTT
题目名称 YGO——组卡组 最终得分 30
用户昵称 Gravatar+1s 是否通过 未通过
代码语言 C++ 运行时间 7.783 s
提交时间 2017-11-09 21:44:45 内存使用 68.95 MiB
显示代码纯文本
#include<cstdio>
#include<cmath>
#define MAX(a,b) a>b?a:b
int t,q,att[1000010],hea[1000010];
struct{int l,r,atk,hel;}stree[4000040];
void bui(int l,int r,int idx)
{
	stree[idx].l=l;
	stree[idx].r=r;
	if(l==r)
	{
		stree[idx].atk=att[l];
		stree[idx].hel=hea[l];
		return;
	}
	int m=(l+r)/2;
	bui(l,m,idx*2);
	bui(m+1,r,idx*2+1);
	stree[idx].atk=MAX(stree[idx*2].atk,stree[idx*2+1].atk);
	stree[idx].hel=MAX(stree[idx*2].hel,stree[idx*2+1].hel);
}
int qryatk(int l,int r,int idx)
{
	if(stree[idx].l==l&&stree[idx].r==r)return stree[idx].atk;
	if(r<=stree[idx*2].r)return qryatk(l,r,idx*2);
	else if(l>=stree[idx*2+1].l)return qryatk(l,r,idx*2+1);
	else return MAX(qryatk(l,stree[idx*2].r,idx*2),qryatk(stree[idx*2+1].l,r,idx*2+1));
}
int qryhel(int l,int r,int idx)
{
	if(stree[idx].l==l&&stree[idx].r==r)return stree[idx].hel;
	if(r<=stree[idx*2].r)return qryhel(l,r,idx*2);
	else if(l>=stree[idx*2+1].l)return qryhel(l,r,idx*2+1);
	else return MAX(qryhel(l,stree[idx*2].r,idx*2),qryhel(stree[idx*2+1].l,r,idx*2+1));
}
int main()
{
	freopen("ygocrad.in","r",stdin);
	freopen("ygocrad.out","w",stdout);
	scanf("%d %d",&t,&q);
	for(int i=1;i<=t;i++)
	{
		int aaaa;
		scanf("%d %d %d",&aaaa,&att[i],&hea[i]);
	}
	bui(1,t,1);
	for(int i=1;i<=q;i++)
	{
		int c,l,r;
		scanf("%d %d %d",&c,&l,&r);
		if(c==0)printf("%d\n",qryhel(l,r,1));
		else printf("%d\n",qryatk(l,r,1));
	}
	return 0;
}