题目来源:码蹄集
https://matiji.net/exam/brushquestion/10/3181/1DC60EA6DF83A333301CFFE1407FBA59
参考程序:
#include<bits/stdc++.h>
#define ll long long
#define inf 0x7f7f7f7f
using namespace std;
ll maxn[1000010],minn[1000010];
ll a[1000010];
int main()
{
ios::sync_with_stdio(false);
ll n,k;
cin >> n >> k;
memset(maxn,-1,sizeof(maxn));
memset(minn,inf,sizeof(minn));
for(ll i=1;i<=k;i++)
{
cin >> a[i];
maxn[a[i]] = max(maxn[a[i]],i);
minn[a[i]] = min(minn[a[i]],i);//记录a[i]号最早被问和最晚被问的时间
}
ll ans = 0;
for(int i=1;i<=n;i++)
{
if(i<1||i>n)
continue;
if(minn[i] > maxn[i-1]&&i>1)
ans++;
if(minn[i] > maxn[i+1]&&i<n)
ans++;
if(minn[i] > maxn[i])
ans++;
}
cout << ans;
}