Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<stdbool.h>
- bool right_verification(int heights[], int position, int n) { // verifica se existe deslizamento a direita
- int i = position;
- for(i = position; i < n - 1; i++) {
- if(heights[i + 1] >= heights[i]) return false; // existe um maior ou igual a direita
- }
- return true;
- }
- bool left_verification(int heights[], int position) { // verifica se existe deslizamento a esquerda
- int i;
- for(i = position; i > 0; i--) {
- if(heights[i - 1] >= heights[i]) return false; // existe um maior ou igual a esquerda
- }
- return true;
- }
- int main() {
- int n, i, left_size = 0, right_size = 0;
- scanf("%d", &n);
- int heights[n], left[n], right[n];
- for(i = 0; i < n; ++i) {
- scanf("%d", &heights[i]);
- }
- for(i = 0; i < n; ++i) {
- if(i > 0 && i < n - 1) { // nao pode ser a primeira nem a ultima posicao
- if(left_verification(heights, i)) { // faz a verificacao a esquerda
- left[left_size] = i; // coloca a posicao no array da esquerda
- left_size++; // aumenta o contador da esquerda
- }
- if(right_verification(heights, i, n)) { // faz a verificacao a direita
- right[right_size] = i; // coloca a posicao no array da direita
- right_size++; // aumenta o contador da direta
- }
- }
- }
- if(left_size > 0) { // existe um ou mais pontos que tem deslizamento a esquerda
- printf("Desabamento a esquerda: ");
- for(i = 0; i < left_size; ++i) {
- printf("%d ", left[i]);
- }
- printf("\n");
- }
- else {
- printf("Nao ocorreu nenhum desabamento a esquerda\n");
- }
- if(right_size > 0) { // existe um ou mais pontos que tem deslizamento a direita
- printf("Desabamento a direita: ");
- for(i = 0; i < right_size; ++i) {
- printf("%d ", right[i]);
- }
- printf("\n");
- }
- else {
- printf("Nao ocorreu nenhum desabamento a direita\n");
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement