如果某一天的温度比前一天降低的值不小于
现在给定了每天的气温,但有一些日子的气温是未知的。小红想知道,发生寒潮的次数的最大值和最小值是多少?
注:我们认为,每天气温的值域一定在[-50,50]。
第一行输入两个正整数,代表总天数、以及寒潮的判定标准。
第二行输入个整数
,代表每天的气温。特殊的,如果
为-999,代表这一天的气温是未知的。
或者
两个整数,代表寒潮数量的最大值和最小值。
3 10 50 -999 -50
2 1
第二天的气温未知,若这一天的气温在[41,50]或者[-50,-41],则共有1天寒潮;否则是两天寒潮。
4 100 -999 -999 -999 -999
2 0
当且仅当四天的气温为50,-50,50,-50时才会有2天寒潮。
#include <stdio.h>
int a[105];
int a_cp[105];
int main() {
int n, x;
scanf("%d%d", &n, &x);
for(int i = 1; i <= n; i++) scanf("%d", &a[i]);
a[0] = -50, a[n+1] = 50;
for(int k = 0; k <= n+1; k++) a_cp[k] = a[k]; //复制数组
for(int j = 1; j <= n; j++){
if(a[j] == -999){
if(a[j-1] - x < -50) a[j] = 50;
else a[j] = a[j-1] - x;
}
}//最大的情况
for(int j = 1; j <= n; j++){
if(a_cp[j] == -999){
if(a_cp[j-1] - x < -50) a_cp[j] = -50;
else a_cp[j] = a_cp[j-1] - x + 1;
}
}//最小
int max = 0, min = 0;
for(int i = 1; i <= n; i++) if(a[i] - a[i+1] >= x) max++;
for(int i = 1; i <= n; i++) if(a_cp[i] - a_cp[i+1] >= x) min++;
printf("%d %d\n", max, min);
return 0;
}
欢迎讨论交流,指正错误!