提交记录 #209
提交时间:2024-11-14 11:06:19
语言:c
状态:Unaccepted
编译情况:编译成功
固定测试点#1:
固定测试点#2:
固定测试点#3:
额外测试点#17:
39【学长出题】寒冷的北京
#include <stdio.h>
void con_tem(int a[], int n) {
int best_start = -1; // 合适的起始位置
int best_end = -1; // 合适的结束位置
int longest_length = 0; // 最长降温段长度
int lowest = a[0]; // 当前最低值的记录
int start_lowest = 0; // 最小值的位置
// 遍历整个数组
for (int i = 0; i < n; i++) {
// 检查当前温度是否是最小的温度
if (a[i] < lowest) {
lowest = a[i];
start_lowest = i; // 更新最小值的位置
}
int j = i;
// 检查连续降温段
while (j + 1 < n && a[j] >= a[j + 1]) {
j++;
}
// 检查降温段是否有效
if (j > i) {
int current_length = j - i + 1; // 当前降温段长度
// 选择更长降温段或相同长度但起始温度更小的段
if (current_length > longest_length ||
(current_length == longest_length && a[i] < a[best_start])) {
longest_length = current_length;
best_start = i;
best_end = j;
}
}
// i 更新为 j,跳过已检查的部分
i = j;
}
// 判断输出
if (best_start != -1) {
printf("%d %d\n", best_start + 1, best_end + 1); // 输出下标从1开始
} else {
printf("%d %d\n", start_lowest + 1, start_lowest + 1); // 输出最小值位置
}
}
int main() {
int N;
scanf("%d", &N);
int tem[N];
for (int i = 0; i < N; i++) {
scanf("%d", &tem[i]);
}
con_tem(tem, N);
return 0;
}