func_code_string: #include <bits/stdc++.h>   using namespace std;   #pragma warning(disable : 4996)   #pragma comment(linker,  /STACK:20000007 )   #pragma GCC optimize( unroll-loops )   const int N = (int)1e6 + 100;   const int maxn = (int)1e3 + 100;   const int base = (int)1e9;   const int mod = (int)1e9 + 7;   const int inf = INT_MAX;   const long long ll_inf = LLONG_MAX;   const long double PI = acos((long double)-1.0);   const long double eps = 1e-8;   void solve() {     int n, s;     scanf( %d%d , &n, &s);     vector<int> P(n);     for (int i = 0; i < n; ++i) {       scanf( %d , &P[i]);     }     multiset<int> S;     for (int i = 0; i < n; ++i) {       S.insert(P[i]);     }     map<int, int> C;     for (int i = 0; i < n; ++i) {       C[P[i]]++;     }     int ans = 0;     --s;     if (P[s]) {       C[P[s]]--;       S.erase(S.find(P[s]));       C[0]++;       ++ans;       P[s] = 0;     }     ans += C[0] - 1;     int have = C[0] - 1;     S.erase(0);     int now = 1;     while (!S.empty() && now <= *(--S.end())) {       if (S.find(now) != S.end())         ;       else if (have)         --have;       else {         ++ans;         S.erase(--S.end());       }       ++now;     }     printf( %d n , ans);   }   int main() {     int T = 1;     for (; T; --T) solve();     return 0;   }   