-
Notifications
You must be signed in to change notification settings - Fork 0
/
1062.c
50 lines (41 loc) · 1.1 KB
/
1062.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#define MAX 1000
// Função para verificar se a permutação desejada é possível
bool podeReorganizar(int N, int perm[]) {
int pilha[MAX];
int topo = -1;
int proximoVagao = 1;
for (int i = 0; i < N; i++) {
while (proximoVagao <= N && (topo == -1 || pilha[topo] != perm[i])) {
pilha[++topo] = proximoVagao++;
}
if (pilha[topo] == perm[i]) {
topo--;
} else {
return false;
}
}
return true;
}
int main() {
int N;
while (scanf("%d", &N) && N != 0) {
int perm[MAX];
while (true) {
scanf("%d", &perm[0]);
if (perm[0] == 0) break;
for (int i = 1; i < N; i++) {
scanf("%d", &perm[i]);
}
if (podeReorganizar(N, perm)) {
printf("Yes\n");
} else {
printf("No\n");
}
}
printf("\n");
}
return 0;
}