fork download
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. using namespace std;
  5.  
  6. int main() {
  7. vector<int> numbers;
  8. int n;
  9. cin >> n;
  10. for (int i = 0; i < n; ++i) {
  11. int x;
  12. cin >> x;
  13. numbers.push_back(x);
  14. }
  15.  
  16. if (n == 1) {
  17. cout << 0 << endl;
  18. return 0;
  19. }
  20.  
  21. sort(numbers.begin(), numbers.end());
  22.  
  23. int ans = 0;
  24. int mx = 0;
  25. int dups = 0;
  26.  
  27. for (int i = 0; i < (int) numbers.size(); ++i) {
  28. cout << "index: " << i << " number:" << numbers[i] << " dups: " << dups << endl;
  29. if (i + 1 < (int) numbers.size() && numbers[i] == numbers[i + 1]) {
  30. ++dups;
  31. continue;
  32. }
  33. int offset = 0;
  34. if (mx >= numbers[i])
  35. offset = mx - numbers[i] + 1;
  36.  
  37. cout << "offset: " << offset << endl;
  38. cout << "increase 1: " << (dups * (dups + 1)) / 2 << " increase 2: " << (dups + 1) * offset << endl;
  39. ans += (dups * (dups + 1)) / 2 + (dups + 1) * offset;
  40. cout << "mx before: " << mx << endl;
  41. mx = numbers[i] + dups + offset;
  42. cout << "mx after: " << mx << endl;
  43. dups = 0;
  44. }
  45.  
  46. cout << ans << endl;
  47.  
  48. return 0;
  49. }
  50.  
  51. // 1 1 2 2 3 7
  52. // 9 0 1 0 1 4
  53.  
  54.  
  55. // 1 1 4 4 5 7
  56. // 9 0 3 0 1 2
  57.  
  58.  
  59. // 1 2 3 4 5 6 4 4 5 7
  60. // 1 1 1 1 1 1 4 4 5 7
  61. // 0 1 2 3 4 5 0 1 0 0
  62.  
Success #stdin #stdout 0s 5552KB
stdin
10
1 1 1 1 1 1 4 4 5 7
stdout
index: 0 number:1 dups: 0
index: 1 number:1 dups: 1
index: 2 number:1 dups: 2
index: 3 number:1 dups: 3
index: 4 number:1 dups: 4
index: 5 number:1 dups: 5
offset: 0
increase 1: 15 increase 2: 0
mx before: 0
mx after: 6
index: 6 number:4 dups: 0
index: 7 number:4 dups: 1
offset: 3
increase 1: 1 increase 2: 6
mx before: 6
mx after: 8
index: 8 number:5 dups: 0
offset: 4
increase 1: 0 increase 2: 4
mx before: 8
mx after: 9
index: 9 number:7 dups: 0
offset: 3
increase 1: 0 increase 2: 3
mx before: 9
mx after: 10
29