为什么下面这份代码编译器能过交上去却 CE
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int MAXN=1e7+7;
ll ans1,ans2;
int a[MAXN],ls[MAXN],rs[MAXN];
int s[MAXN]={0,1},top=1;
inline int read(){
int x=0,f=1;
char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-')
f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9'){
x=(x<<1)+(x<<3)+(ch^48);
ch=getchar();
}
return x*f;
}
int main(){
int n=read();
for(int i=1;i<=n;++i){
a[i]=read();
}
for(int i=2;i<=n;++i){
while (a[i]<a[s[top]] && top!=0) --top;
if (top==0){
ls[i]=s[top+1];
}
else{
ls[i]=rs[s[top]];
rs[s[top]]=i;
}
s[++top]=i;
}
for(int i=1;i<=n;++i){
ans1=ans1^(i*1ll*(ls[i]+1));
ans2=ans2^(i*1ll*(rs[i]+1));
}
printf("%lld %lld\n",ans1,ans2);
return 0;
}