记录编号 269092 评测结果 TTTTTTTTTT
题目名称 区间权最大 最终得分 0
用户昵称 Gravatar安呐一条小咸鱼。 是否通过 未通过
代码语言 C++ 运行时间 10.036 s
提交时间 2016-06-13 08:13:41 内存使用 27.04 MiB
显示代码纯文本
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
const int maxn=1001000;
int A[maxn],B[maxn],C[maxn];
inline int QuickRead() 
{
	int ret ;
	char ch = getchar();
	while (ch < '0' || ch > '9') ch = getchar();
	ret = ch - '0';
	ch = getchar();
	while (ch >= '0' && ch <= '9')
	{
		ret = ret * 10 + ch - '0';
		ch = getchar();
	}
	return ret;
}
int a[maxn<<2];
void Build(int,int,int);
int Question(int,int,int,int,int);
int Get_max(int,int);
void Init();
int x,y;
int main()
{
	freopen("max.in","r",stdin);
	freopen("max.out","w",stdout);
	Init();
	return 0;
}
void Init()
{
	int m,n;
	n=QuickRead();
	m=QuickRead();
	for(int i=1;i<=n;i++)
	{
		scanf("%d%d%d",&A[i],&B[i],&C[i]);
	}
	Build(1,1,n);
	for(int i=1;i<=m;i++)
	{
		x=QuickRead();
		y=QuickRead();
		int c=Question(1,x,y,1,n);
		printf("%d ",c);	
	}
}
void Build(int rt,int x,int y)
{
	if(x==y)
	{
		scanf("%d",&a[rt]);
		return;
	}
	int mid=(x+y)>>1;
	Build(rt<<1,x,mid);
	Build(rt<<1|1,mid+1,y);
	a[rt]=Get_max(a[rt<<1],a[rt<<1|1]);
}
int Question(int rt,int x,int y,int s,int t)
{
	if(x==s&&y==t)
	{
		return a[rt];
	}
	int mid=(s+t)/2;
	if(y<=mid) return Question(rt*2,x,y,s,mid);
	if(x>mid) return Question(rt*2+1,x,y,mid+1,t);
	return Get_max(Question(rt*2,x,mid,s,mid),Question(rt*2+1,mid+1,y,mid+1,t));
}
int Get_max(int x,int y)
{
	return x>y?x:y;
}