代码:
#include<bits/stdc++.h>
using namespace std;
const int N = 1e6 + 1;
int n, k, ans = 0x7fffff, a[N], b[N];
int main()
{
cin >> n >> k;
multiset <int> st;
for(int i = 1; i <= n; i++)
{
st.insert(i);
st.insert(i);
}
for(int i = 1; i <= k; i++)
{
int x;
cin >> x;
st.erase(st.find(x));
}
vector <int> v = {0};
for(auto x : st)
{
v.push_back(x);
}
int m = v.size() - 1;
for(int i = 2; i <= m; i++)
{
a[i] = a[i - 2] + v[i] - v[i - 1];
}
for(int i = m - 1; i >= 1; i -= 2)
{
b[i - 1] = b[i + 1] + v[i] - v[i - 1];
}
if(k % 2 == 0)
{
ans = a[m];
}
else
{
for(int i = 1; i <= m; i += 2)
{
ans = min(ans, a[i - 1] + b[i + 1]);
}
}
cout << ans;
}
求调,样例不知道为什么过不了!