#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include<iostream> #include<vector> using namespace std; //在一个整数数组上,对于下标为i的整数 //如果它大于所有它相邻的整数, 或者小于所有它相邻的整数,则称该整数为一个极值点,极值点的下标就是i。 //每个案例第一行为此数组元素个数k(4<k<80),第二行是k个整数,每两个整数之间用空格分隔 //每个案例输出为n个数字(其中n为该案例中极值点的个数) //每个数字对应相应数组的相应极值点下标值,下标值之间用空格分隔。 int main() { int k; while (scanf("%d", &k) != EOF) { vector<int> arr; for (int i = 0; i < k; i++) { //构建数组 int current; scanf("%d", ¤t); arr.push_back(current); } int len = arr.size() - 1; int Final[80] = { 0 }; if (arr[0] > arr[1] || arr[0] < arr[1]) { Final[0] = 1; } if (arr[len] > arr[len - 1] || arr[len] < arr[len - 1]) { Final[len] = 1; } for (int i = 1; i < len; i++) { if ((arr[i] > arr[i - 1] && arr[i] > arr[i + 1]) || (arr[i] < arr[i - 1] && arr[i] < arr[i + 1])) { Final[i] = 1; } } for (int i = 0; i <= len; i++) { if (Final[i] == 1) { printf("%d ", i); } } printf("\n"); } return 0; }