lina_os

Untitled

Mar 13th, 2025
10
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.74 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #define ll long long
  3.  
  4. using namespace std;
  5.  
  6. ostream &operator <<(ostream &os, __int128 const &value) {
  7. static char buffer[64];
  8. int index = 0;
  9. __uint128_t T = (value < 0) ? (-(value + 1)) + __uint128_t(1) : value;
  10. if (value < 0)
  11. os << '-';
  12. else if (T == 0)
  13. return os << '0';
  14. for (; T > 0; ++index) {
  15. buffer[index] = static_cast<char>('0' + (T % 10));
  16. T /= 10;
  17. }
  18. while (index > 0)
  19. os << buffer[--index];
  20. return os;
  21. }
  22.  
  23. istream &operator >>(istream &is, __int128 &T) {
  24. static char buffer[64];
  25. is >> buffer;
  26. size_t len = strlen(buffer), index = 0;
  27. T = 0;
  28. int mul = 1;
  29. if (buffer[index] == '-')
  30. ++index, mul *= -1;
  31. for (; index < len; ++index)
  32. T = T * 10 + static_cast<int>(buffer[index] - '0');
  33. T *= mul;
  34. return is;
  35. }
  36.  
  37.  
  38. int main() {
  39. ios_base::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
  40. int t;
  41. cin >> t;
  42. while (t--) {
  43. int n;
  44. cin >> n;
  45. vector<__int128>v(n);
  46. __int128 a[n];
  47. for (int i=0; i<n; i++) {
  48. cin >> a[i];
  49. v[i]=a[i]*a[i]-a[i]*(i+1)+(i+1)*(i+1);
  50. }
  51. sort(v.begin(), v.end());
  52. ll ans=0;
  53. ll x=1;
  54. for (int i=1; i<n; i++) {
  55. if (v[i]!=v[i-1]) {
  56. ans+=x*(x-1)/2;
  57. x=1;
  58. }
  59. else x++;
  60. }
  61. ans+=x*(x-1)/2;
  62. cout << ans << endl;
  63. }
  64. return 0;
  65. }
  66.  
  67.  
  68. /* aj^2-aj.j+j^2 == ai^2-.ai.i+i^2
  69. * aj=ai && j=i XXX
  70. * aj=i && ai=j ---
  71. * aj2-aj.j=ai2-ai.i && i=j XXX
  72. * aj=ai && j(j-aj)=i(i-ai)
  73. * aj=i && j(j-aj)=ai(ai-i)
  74. * ai=j && i(i-ai)=aj(aj-j)
  75. */
Advertisement
Add Comment
Please, Sign In to add comment