显然对于每个 答案是当前所有 构成的极长连续段个数,所以只要加入 时,判断其对整体的极长连续段个数产生的影响,简单分类讨论维护即可。代码:

#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll n,a[100005],mp[100005],res=0;
int main(){
    cin>>n;
    for(ll i=1;i<=n;i++) cin>>a[i];
    for(ll i=1;i<=n;i++){
        if(!mp[a[i]-1]&&!mp[a[i]+1]) res++;
        else if(mp[a[i]-1]&&mp[a[i]+1]) res--;
        mp[a[i]]=1;
        cout<<res<<" ";
    }
}