fork download
  1. #include<iostream>
  2. #include<vector>
  3. using namespace std;
  4. const int MAX_N = 100'000;
  5. int a_sum[MAX_N + 1];
  6. int n, d;
  7. int l, r;
  8. bool good(double mid) {
  9. double mi = 1e18;
  10. double mi_pos = -1;
  11. for(int i = d; i <= n; i++) {
  12. int j = i - d;
  13. cout << j * mid << endl;
  14. if(mi > a_sum[j] - j * mid) {
  15. mi = a_sum[j] - j * mid;
  16. mi_pos = j + 1;
  17. }
  18. if(a_sum[i] - i * mid >= mi) {
  19. l = mi_pos;
  20. r = i;
  21. return 1;
  22. }
  23. }
  24. return 0;
  25. }
  26. int main() {
  27. cin >> n >> d;
  28. for(int i = 1; i <= n; i++) {
  29. int x;
  30. cin >> x;
  31. a_sum[i] = x + a_sum[i - 1];
  32. }
  33. double low = -1, hi = 100;
  34. for(int i = 0; i < 60; i++) {
  35. double mid = (low + hi) / 2;
  36. if(good(mid)) {
  37. low = mid;
  38. } else {
  39. hi = mid;
  40. }
  41. }
  42. cout << l << ' ' << r << '\n';
  43. }
Success #stdin #stdout 0.01s 5284KB
stdin
6 2
3 1 8 5 7 2
stdout
0
49.5
99
148.5
198
0
24.25
48.5
72.75
97
0
11.625
23.25
34.875
46.5
0
5.3125
10.625
0
8.46875
16.9375
25.4062
33.875
0
6.89062
13.7812
20.6719
27.5625
0
6.10156
12.2031
0
6.49609
12.9922
0
6.69336
13.3867
20.0801
26.7734
0
6.59473
13.1895
19.7842
0
6.64404
13.2881
19.9321
0
6.6687
13.3374
20.0061
26.6748
0
6.65637
13.3127
19.9691
0
6.66254
13.3251
19.9876
0
6.66562
13.3312
19.9969
0
6.66716
13.3343
20.0015
26.6686
0
6.66639
13.3328
19.9992
0
6.66677
13.3335
20.0003
26.6671
0
6.66658
13.3332
19.9997
0
6.66668
13.3334
20
26.6667
0
6.66663
13.3333
19.9999
0
6.66665
13.3333
20
0
6.66667
13.3333
20
0
6.66667
13.3333
20
26.6667
0
6.66667
13.3333
20
26.6667
0
6.66667
13.3333
20
26.6667
0
6.66667
13.3333
20
26.6667
0
6.66667
13.3333
20
26.6667
0
6.66667
13.3333
20
0
6.66667
13.3333
20
26.6667
0
6.66667
13.3333
20
0
6.66667
13.3333
20
0
6.66667
13.3333
20
0
6.66667
13.3333
20
0
6.66667
13.3333
20
26.6667
0
6.66667
13.3333
20
0
6.66667
13.3333
20
26.6667
0
6.66667
13.3333
20
0
6.66667
13.3333
20
26.6667
0
6.66667
13.3333
20
26.6667
0
6.66667
13.3333
20
26.6667
0
6.66667
13.3333
20
26.6667
0
6.66667
13.3333
20
26.6667
0
6.66667
13.3333
20
0
6.66667
13.3333
20
26.6667
0
6.66667
13.3333
20
26.6667
0
6.66667
13.3333
20
26.6667
0
6.66667
13.3333
20
26.6667
0
6.66667
13.3333
20
0
6.66667
13.3333
20
0
6.66667
13.3333
20
0
6.66667
13.3333
20
26.6667
0
6.66667
13.3333
20
26.6667
0
6.66667
13.3333
20
0
6.66667
13.3333
20
26.6667
0
6.66667
13.3333
20
0
6.66667
13.3333
20
0
6.66667
13.3333
20
0
6.66667
13.3333
20
0
6.66667
13.3333
20
3 5