What wrong in my code in online gdb is give write answer but here wrong answer

#include
#include
using namespace std;
int main() {
int n;
cin>>n;
int a[n];
for(int j=0;j<n;j++){
cin>>a[j];
}
stackp;
int area;
int maxarea=0;
int t;
int i=0;
while(i<n){
if((p.empty())||(a[i]>=a[p.top()])){
p.push(i);
i=i+1;

}
else{
t=p.top();
    p.pop();
    if(p.empty()){
        area=a[t]*i;
        if(area>maxarea){
            maxarea=area;
        }
    }
    else{
        area=(i-p.top()-1)*a[t];
        if(area>maxarea){
            maxarea=area;
        }
    }
}

}
while(!p.empty()){
t=p.top();
p.pop();
if(p.empty()){
area=a[t]*i;
if(area>maxarea){
maxarea=area;
}
}
else{
area=(i-p.top()-1)*a[t];
if(area>maxarea){
maxarea=area;
}
}

}
cout<<maxarea;

return 0;

}