蒟蒻不理解一个问题:(详见代码注释
查看原帖
蒟蒻不理解一个问题:(详见代码注释
965007
SMXChina楼主2025/7/26 14:27
#include<bits/stdc++.h>
using namespace std;
#define int long long

const int N=1e7+10;

int n,arr[N],ls[N],rs[N],s[N],top,ans1,ans2;

signed main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>arr[i];
	}
	s[++top]=1;
	for(int i=2;i<=n;i++)
	{
		while(top&&arr[s[top]]>arr[i]) top--;
		if(!top) ls[i]=s[1];
		else ls[i]=s[top+1];//这里为什么要写成ls[i] = rs[s[top]],为什么我这样写不对
		rs[s[top]]=i;
		s[++top]=i;
	}
	for(int i=1;i<=n;i++)
	{
		ans1^=i*(ls[i]+1);
		ans2^=i*(rs[i]+1);
	}
	cout<<ans1<<" "<<ans2;
	return 0;
}
2025/7/26 14:27
加载中...