#include<iostream>
using namespace std;
int n,m,a[1000009],b[1000009];
int main(){
cin>>n>>m;
for(int i=1;i<=m;i++){
cin>>a[i];
}
for(int i=1;i<=n;i++){
b[i]=1;
}
for(int i=1;i<=n;i++){
b[a[i]]=0;
b[a[i]-1]=0;
b[a[i]-2]=0;
b[a[i]+1]=0;
b[a[i]+2]=0;
}
int ans=0;
for(int i=1;i<=n;i++){
if(b[i]==0) ans++;
}
cout<<ans;
return 0;
}
n 棵树从左至右排成一排,我们将它们从左至右依次标号为 1∼n。
现在有 m 道雷依次劈下。你得知了一串序列 a1,⋯,am。对于第 i 道雷,它会劈中第 ai 棵树,也会劈中这棵树前面 2 棵和后面 2 棵树(如果有的话)。
在 m 道雷劈完后,你想要知道,被劈过至少一次的树有几个。
输入共两行。
第一行为两个整数 n,m,代表树数量和雷的数量。
第二行为 m 个整数 a1,⋯,am,代表题面中的序列。
输出共一行。
输出一行一个整数,被劈过至少一次的树的数量。
17 1
4
5
10 1
2
4
9 3
3 7 7
9
被劈中的树是 2,3,4,5,6 号,共 5 个。
被劈中的树是 1,2,3,4 号,共 4 个。请注意 a1−2=0 号树不存在,也不应被劈中。
被劈中的树是 1,2,3,4,5,6,7,8,9 号,共 9 个。
请注意尽管部分树被劈了两次甚至三次,对这些树我们仍然只计数一次。