Code di bawah ini merupakan penyelesaian dari salah satu problem SPOJ yang bernama Street Parade dalam bahasa C. Accepted 0.00 s.
Problem url: spoj.com/problems/STPAR/
#include <stdio.h>
#define MAX 1001
void Push(int *stack, int val, int *top)
{ stack[++(*top)] = val;
}
void Process1(int *input, int n)
{ int stack[MAX], top = -1, i, go = 0;
for(i = 0; i < n; i++)
{ while(top != -1 && stack[top] == go + 1)
{ top--;
go++;
}
if(input[i] == go + 1) go++;
else if(top != -1 && input[i] > stack[top])
{ printf("no\n");
return;
}
else Push(stack, input[i], &top);
}
printf("yes\n");
}
int main()
{ int input[MAX], n, i;
while(scanf("%d", &n) && n != 0)
{ for(i = 0; i < n; i++)
scanf("%d", &input[i]);
Process1(input, n);
}
}
No comments:
Post a Comment