rendered paste body#include <stdio.h>#define DEBUG 0int maxgrupo(int grupo[], int size){ int i, num, tmp, var; int max = 0; for (i = 0; i < size; i++) { var = grupo[i]; if(var == 0) continue; if(DEBUG) printf("\npara o numero %d: \n", var); for (tmp = 0, num = i+1; grupo[num] >= var; num++) { if (grupo[num] == 0) { break; } else { if(DEBUG) printf(" --> %d\n", grupo[num]); tmp++; } } int temmp = tmp; if(DEBUG) printf("detectados %d numeros seguintes maiores\n", temmp); for (num = i-1; var <= grupo[num]; num--) { if (grupo[num] == 0) { break; } else { if(DEBUG) printf(" <-- %d\n", grupo[num]); tmp++; } } if(DEBUG) printf("detectados %d numeros anteriores maiores\n", tmp-temmp); int tempo = var*(tmp+1); if(DEBUG) printf("area tempo: %d\n", tempo); if (tempo > max ) { max = tempo; } } return max;}int main(void){ int limit, grupos = 0; scanf("%d\n", &limit); int predios[limit]; int i, temp, num = 0; for(i = 0; i < limit; i++) { scanf("%d\n", &temp); predios[num++] = temp; } /*grupos++;*/ /*obrigatoriamente tem um ultimo grupo no fim*/ if(!DEBUG) printf("%d\n", maxgrupo(predios, num)); if(DEBUG) { printf("\nproblema D - fase de treino ONI 2007:\n\n"); printf("grupos de predios: %d\n", grupos); printf("numero de predios: %d\n", limit); printf("predios no array: %d\n", num); printf("altura dos predios: "); int i; for(i = 0; i < num; i++) { printf("%d ", predios[i]); }putchar('\n'); /*int teste[14] = {2, 1, 3, 0, 1, 2, 3, 0, 1, 2, 5, 4, 2, 6}; printf("\narea maxima: %d\n", maxgrupo(teste, 14));*/ printf("%d\n", maxgrupo(predios, num)); } return 0;}