#include<bits/stdc++.h>
using namespace std;
using ll=long long;
ll mod=998244353;
int main()
{
int n,x;
cin>>n>>x;
vector<int>v(n);
for(int i=0;i<n;i++){
cin>>v[i];
}
vector<int>vi=v;
vector<int>vii=v;
for(int i=0;i<n;i++){
if(i==0&&vi[i]==-999){
vi[i]=50;
}
else{
if(vi[i]==-999){
if(vi[i-1]-x>=-50){
vi[i]=vi[i-1]-x;
}
else{
vi[i]=50;
}
}
}
}
for(int i=0;i<n;i++){
if(i==0&&vii[i]==-999){
vii[i]=-50;
}
else{
if(vii[i]==-999){
if(vii[i-1]-x+1>=-50){
vii[i]=vii[i-1]-x+1;
}
else{
vii[i]=-50;
}
}
}
}
int maxn=0,minn=0;
for(int i=1;i<n;i++){
if(vi[i]-vi[i-1]<=-x){
maxn++;
}
if(vii[i]-vii[i-1]<=-x){
minn++;
}
}
cout<<maxn<<" "<<minn<<endl;
}
我们可以使用贪心的思想来开两个数组,在最大的数组里面如果出现-999的话,可以如果可以将-999修改为v[i-1]-x的话直接修改,不能就改为50为下一个降低做准备,同理最小的里面我们就不让它为降温天修改为v[i-1]-x+1,如果不能满足就直接改为-50让它的下一个不可能为降温天。另外天气冷了,大家注意保暖。

京公网安备 11010502036488号