#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; }
1874번: 스택 수열
https://www.acmicpc.net/problem/1874
피드 구독하기:
댓글
(
Atom
)
댓글 없음 :
댓글 쓰기