fork download
  1. #include <iostream>
  2. #include <algorithm>
  3.  
  4. using namespace std;
  5.  
  6. const int n = 5000;
  7. const int m = 5;
  8. const int N = n * (n - 1) / 2;
  9.  
  10. long long d[N];
  11. int o[N], s[n];
  12.  
  13. int main(void)
  14. {
  15. int a, b, i, j;
  16.  
  17. for (i = 0, b = 1; b <= n - 1; b++) {
  18. for (a = b + 1; a <= n; a++, i++) {
  19. d[i] = (long long)a * a * a - (long long)b * b * b;
  20. o[i] = i;
  21. }
  22. s[b] = i - 1;
  23. }
  24. sort(o, o + N, [](int x, int y) {return d[x] < d[y];});
  25.  
  26. for (i = 0; i < N - m + 1; i++) {
  27. if (d[o[i]] != d[o[i + m - 1]]) continue;
  28.  
  29. cout << d[o[i]] << ": ";
  30. for (j = i + m; d[o[j]] == d[o[i]]; j++);
  31. sort(o + i, o + j);
  32.  
  33. for_each(o + i, o + j, [&](int &p) {
  34. b = equal_range(s + 1, s + n, p).first - s;
  35. a = p - s[b - 1] + b;
  36. cout << (&p > o + i ? ", (" : "(") << a << ", " << b << ")";
  37. });
  38. cout << endl;
  39. i = j - 1;
  40. }
  41. return 0;
  42. }
Success #stdin #stdout 1.65s 149920KB
stdin
Standard input is empty
stdout
1412774811: (1134, 357), (1155, 504), (1246, 805), (2115, 2004), (4746, 4725)