Files
C_code/exercise/exercise/55.c
T
2025-12-23 08:04:26 +08:00

40 lines
998 B
C

#include <stdio.h>
#include <stdlib.h>
#ifdef _WIN32
#include <windows.h>
#endif
int main(void){
#ifdef _WIN32
system("chcp 65001 > nul");
SetConsoleOutputCP(65001);
SetConsoleCP(65001);
#endif
int n;
if (scanf("%d", &n) != 1) return 0;
int *a = (int*)malloc((size_t)n * sizeof(int));
for (int i = 0; i < n; ++i) scanf("%d", &a[i]);
int *L = (int*)malloc((size_t)n * sizeof(int));
int *R = (int*)malloc((size_t)n * sizeof(int));
L[0] = 1;
for (int i = 1; i < n; ++i){
if (a[i] > a[i-1]) L[i] = L[i-1] + 1;
else if (a[i] == a[i-1]) L[i] = L[i-1];
else L[i] = 1;
}
R[n-1] = 1;
for (int i = n-2; i >= 0; --i){
if (a[i] > a[i+1]) R[i] = R[i+1] + 1;
else if (a[i] == a[i+1]) R[i] = R[i+1];
else R[i] = 1;
}
long long sum = 0;
for (int i = 0; i < n; ++i){
sum += (L[i] > R[i]) ? L[i] : R[i];
}
printf("%lld\n", sum);
free(R);
free(L);
free(a);
return 0;
}