fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. int main() {
  5. int N; cin >> N;
  6. int stands[N];
  7. for (int i=0; i<N; i++) cin >> stands[i];
  8.  
  9. for (int i = 0; i < N; i++) {
  10. int dist = 0, currIdx = i;
  11. vector<int> reStands;
  12. for (int i=0; i<N; i++) reStands.push_back(stands[i]);
  13. while (reStands.size() > 0) {
  14. if (currIdx == 0 || currIdx == reStands.size() || reStands.size() == 2) {
  15. dist += reStands[reStands.size()-1] - reStands[0];
  16. break;
  17. }
  18. else {
  19. if (reStands[i]-reStands[i-1] < reStands[i+1] - reStands[i]) {
  20. cout << "greater: " << reStands[i] << "-" << reStands[i-1] << endl;
  21. currIdx = i-1;
  22. dist += reStands[i]-reStands[i-1];
  23. reStands.erase(reStands.begin()+i);
  24. cout << dist << endl;
  25. cout << reStands.size() << " " << currIdx << endl;
  26. }
  27. else {
  28. cout << "less: " << reStands[i+1] << "-" << reStands[i] << endl;
  29. currIdx = i;
  30. dist += reStands[i+1] - reStands[i];
  31. reStands.erase(reStands.begin()+i);
  32. cout << dist << endl;
  33. cout << reStands.size() << " " << currIdx << endl;
  34. }
  35. }
  36. }
  37. cout << dist << endl;
  38. }
  39. }
Success #stdin #stdout 0.01s 5476KB
stdin
7
2 5 6 10 12 20 22
stdout
20
less: 6-5
1
6 1
less: 10-6
5
5 1
less: 12-10
7
4 1
less: 20-12
15
3 1
less: 22-20
17
2 1
37
greater: 6-5
1
6 1
less: 12-10
3
5 2
greater: 12-5
10
4 1
less: 22-20
12
3 2
less: 22-22
12
2 2
15
less: 12-10
2
6 3
greater: 12-6
8
5 2
less: 22-20
10
4 3
less: 22-22
10
3 3
14
greater: 12-10
2
6 3
less: 22-20
4
5 4
less: 22-22
4
4 4
12
less: 22-20
2
6 5
less: 22-22
2
5 5
12
less: 0-22
-22
6 6
-4