fork(1) download
  1. #include<bits/stdc++.h>
  2.  
  3. typedef long long int ll;
  4. typedef long double ld;
  5.  
  6. #define fast ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL)
  7. #define enddl '\n'
  8. #define ff first
  9. #define ss second
  10. #define pb push_back
  11. #define mp make_pair
  12. #define pii pair<int,int>
  13. #define full(a) a.begin(),a.end()
  14. #define mem(a,x) memset(a,x,sizeof(a))
  15.  
  16. const int MAXN = 2*1e5+5;
  17. const int MOD = 1e9+7;
  18.  
  19. using namespace std;
  20.  
  21. ll a[MAXN];
  22. map<ll,ll> m1,m2,m3;
  23.  
  24. int main() {
  25. int n , k ;
  26. cin >> n >> k;
  27. for(int i=1;i<=n;i++) {
  28. cin >> a[i];
  29. }
  30. ll ans = 0;
  31. if(k == 1) {
  32. map<ll,ll> m;
  33. for(int i=1;i<=n;i++) {
  34. m[a[i]]++;
  35. }
  36. for(auto it : m) {
  37. if(it.second >= 3) {
  38. ll x = it.second;
  39. ll temp = x*(x-1)*(x-2);
  40. temp/=6;
  41. ans+=temp;
  42. }
  43. }
  44. cout << ans << endl;
  45. return 0;
  46. }
  47. for(int i=1;i<=n;i++) {
  48. m1[a[i]]++;
  49. if(a[i]%k == 0) {
  50. m2[a[i]]+=(m1[a[i]/k]);
  51. if(a[i]%(k*k) == 0) {
  52. m3[a[i]]+=(m2[a[i]/(k)]);
  53. }
  54. }
  55. }
  56. for(auto it : m3) {
  57. if(it.ff!=0)
  58. ans+=(it.ss);
  59. else
  60. ans+=(it.ss - m1[0]*m1[0]);
  61. }
  62. cout << ans << endl;
  63.  
  64.  
  65. }
Success #stdin #stdout 0s 4320KB
stdin
6 2
1 1 2 2 4 8
stdout
6