fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. using ll = long long;
  5.  
  6. int main() {
  7. int t;
  8. cin >> t;
  9.  
  10. while (t--) {
  11. int n, k;
  12. cin >> n >> k;
  13.  
  14. vector<int> a(n);
  15.  
  16. for (int i = 0; i < n; i++) {
  17. cin >> a[i];
  18. }
  19.  
  20. int i = 0;
  21. ll ans = 0;
  22. ll prev = -1;
  23.  
  24. while (i < n) {
  25. int j = i;
  26.  
  27. // Find group of equal elements
  28. while (j < n && a[i] == a[j]) {
  29. j++;
  30. }
  31.  
  32. // First value that this group can take
  33. ll st = max(prev + 1, (ll)a[i]);
  34.  
  35. // Assign consecutive values
  36. for (int p = i; p < j; p++) {
  37. ll fin = st + (p - i);
  38.  
  39. ans += fin - a[i];
  40.  
  41. prev = fin;
  42. }
  43.  
  44. i = j;
  45. }
  46.  
  47. cout << ans << endl;
  48. }
  49. }
Success #stdin #stdout 0s 5320KB
stdin
4
2 1
2 1
4 2
1 1 1 1
6 3
1 3 2 3 2 3
7 4
1 5 2 2 5 5 1
stdout
2
6
12
25