Advertisement
Korotkodul

itmo_простая_задача_2

Jan 26th, 2023 (edited)
845
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.57 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3. #include <vector>
  4. #include <queue>
  5. #include <algorithm>
  6. #include <string>
  7. #include <stack>
  8. #include <set>
  9. #include <map>
  10. #define pii pair <int, int>
  11. #define pb(x) push_back(x)
  12. using namespace std;
  13. using ll = long long;
  14. using ld = long double;
  15. using db = double;
  16. void cv(vector <int> &v) {
  17.     for (auto x : v) cout << x << ' ';
  18.     cout << "\n";
  19. }
  20.  
  21. void cvl(vector <ll> &v) {
  22.     for (auto x : v) cout << x << ' ';
  23.     cout << "\n";
  24. }
  25.  
  26.  
  27. void cvv(vector <vector <int> > &v) {
  28.     for (auto x : v) cv(x);
  29.     cout << "\n";
  30. }
  31.  
  32. void cvb(vector <bool> v) {
  33.     for (bool x : v) cout << x << ' ';
  34.     cout << "\n";
  35. }
  36.  
  37. void cvs(vector <string>  v) {
  38.     for (auto a : v) {
  39.         cout << a << "\n";
  40.     }
  41. }
  42.  
  43. void cvp(vector <pii> a) {
  44.     for (auto p : a) {
  45.         cout << p.first << ' ' << p.second << "\n";
  46.     }
  47.     cout << "\n";
  48. }
  49.  
  50.  
  51.  
  52. int main() {
  53.     /*ios::sync_with_stdio(0);
  54.     cin.tie(0);
  55.     cout.tie(0);*/
  56.     int n;
  57.     cin >> n;
  58.     bool sh = 0;
  59.     vector <int> v(n);
  60.     int til = 500;
  61.     vector <ll> dp(600, 0);
  62.     for (int &i: v) {
  63.         cin >> i;
  64.         dp[i]++;
  65.     }
  66.     ll ans = 0;
  67.  
  68.  
  69.     vector <ll> pf(520, 0);
  70.     for (ll i = 1; i <= til; ++i) {
  71.         pf[i] = pf[i - 1] + dp[i];
  72.     }
  73.     if (sh) {
  74.         cout << "pf\n";
  75.         cvl(pf);
  76.     }
  77.  
  78.     //pf - именно кол-вотаких-то чисел, а не сумма
  79.     for (int a = 1; a <= til; ++a) {
  80.         for (int b = 1; b <= til; ++b) {
  81.             for (int c = 1; c <= til; ++c) {
  82.                 if (dp[a] == 0 || dp[b] == 0 || dp[c] == 0) {
  83.                     continue;
  84.                 }
  85.                 ll fro = a * b / c;
  86.                 if (fro * c < a * b) fro++;
  87.                 if (fro > 500) {
  88.                     continue;
  89.                 }
  90.                 ll del = 0;
  91.                 if (fro - 1 >= 0) {
  92.                     del = pf[fro - 1];
  93.                 }
  94.                 ll Sd = pf[til] - del;
  95.                 ll plu = dp[a] * dp[b] * dp[c] * Sd;
  96.                 ans += plu;
  97.                 if (sh && plu > 0 && fro == 18) {
  98.                     cout << "a b c = " << a << ' ' << b << ' ' << c << "\n";
  99.                     cout << "fro = " << fro << "\n";
  100.                     cout << "Sd = " << Sd << "\n";
  101.                     cout << "plu = " << plu << "\n";
  102.                     cout << "del = " << del << "\n";
  103.                     cout << "\n\n";
  104.                 }
  105.             }
  106.         }
  107.     }
  108.  
  109.     cout << ans;
  110. }
  111. /*
  112. a b c = 6 6 2
  113. fro = 18
  114. Sd = 3
  115. plu = 3
  116. */
  117.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement