fork download
  1. #include <iostream>
  2. #include <unordered_map>
  3. #include <vector>
  4. #include <queue>
  5.  
  6. using namespace std;
  7.  
  8. typedef long long LL;
  9.  
  10. struct Data
  11. {
  12. LL cur;
  13. int dir;
  14. LL origin;
  15. };
  16.  
  17. int main()
  18. {
  19. ios_base::sync_with_stdio(false);
  20. cin.tie(nullptr), cout.tie(nullptr);
  21.  
  22. int N, K; cin >> N >> K;
  23.  
  24. LL ans = 0;
  25.  
  26. vector<int> v(N);
  27. unordered_map<int, bool> visit;
  28.  
  29. queue<Data> Q;
  30.  
  31. for(int i=0; i<N; i++){
  32. cin >> v[i];
  33. Q.push({v[i] - 1, -1, v[i]});
  34. Q.push({v[i] + 1, +1, v[i]});
  35.  
  36. visit[v[i]] = true;
  37. }
  38.  
  39. int cnt=0;
  40.  
  41. while(Q.size())
  42. {
  43. auto cur = Q.front(); Q.pop();
  44.  
  45. if(cnt == K)
  46. break;
  47.  
  48. if(visit[cur.cur])
  49. continue;
  50.  
  51. visit[cur.cur] = true;
  52. cnt++;
  53.  
  54. ans += abs(cur.cur - cur.origin);
  55.  
  56.  
  57. LL next = cur.cur + cur.dir;
  58.  
  59. Q.push({next, cur.dir, cur.origin});
  60. }
  61.  
  62. cout << ans;
  63.  
  64. return 0;
  65. }
Success #stdin #stdout 0.01s 5292KB
stdin
1 1
0
stdout
1