#include <stdio.h>
#define max 100001
int stack[max];
int top=-1;
int empty()
{
    if(top<0) return 1;
    else return 0;
}
void push(int v)
{
    stack[++top]=v;
}
int pop()
{
    return stack[top--];
}
int peek()
{
    return stack[top];
}
int main() {
    int a;
    int x[100001],y[300000];
    scanf("%d",&a);
    for(int i=1;i<=a;i++)
    {
        scanf("%d",&x[i]);
    }
    int k=1,p=1,z=1;
    while(k!=a)
    {
        if(empty()==0 && x[k]==peek())
        {
            pop();
            y[z++]=0;
            k++;
        }
        else if(p<=a)
        {
            push(p);
            p++;
            y[z++]=1;
        }
        else
        {
            printf("NO");
            z=0;
            break;
        }
    }
    for(int i=1;i<=z;i++)
    {
        if(y[i]==1) printf("+\n");
        else if(y[i]==0) printf("-\n");
    }
}

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: