페이지

1874번: 스택 수열

https://www.acmicpc.net/problem/1874


#include<stdio.h>
const int MAX_N = 1e5;
int n, r[MAX_N * 2], rcnt, stk[MAX_N], top, t = 1;
int main() {
    scanf("%d", &n);
    for (int i = 0, x; i < n; i++) {
        scanf("%d", &x);
        while (t != n + 1 && (!top || stk[top - 1] != x)) stk[top++] = t++, r[rcnt++] = 1;
        if (t == n + 1 && stk[top - 1] != x) {
            puts("NO");
            return 0;
        }
        top--; rcnt++;
    }
    for (int i = 0; i < rcnt; i++) puts(r[i] ? "+" : "-");
    return 0;
}

댓글 없음 :

댓글 쓰기