P5854笛卡尔树模板求助!
  • 板块题目总版
  • 楼主ChenZQ
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/9/15 17:31
  • 上次更新2024/9/15 17:44:23
查看原帖
P5854笛卡尔树模板求助!
745358
ChenZQ楼主2024/9/15 17:31
using namespace std;

int l[1000010],r[10000010];
int n;
int a[10000010];
int stk[10000010],top=0;
int main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++) scanf("%d",&a[i]);
	for(int i=1;i<=n;i++)
	{
		int k=top;
		while(k>0 && a[stk[k]]>a[i]) k--;
		if(k) r[stk[k]]=i;
		if(k<top) l[i]=stk[k+1];
		stk[++k]=i;
		top=k;
	}
	long long ans=0;
	for(int i=1;i<=n;i++) ans^=(i*(l[i]+1));
	printf("%lld ",ans);
	ans=0;
	for(int i=1;i<=n;i++) ans^=(i*(r[i]+1));
	printf("%lld",ans);
}
2024/9/15 17:31
加载中...