Advertisement
Guest User

Untitled

a guest
Jan 19th, 2018
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.41 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. #define mp make_pair
  6. #define pb push_back
  7. #define ll long long
  8. #define pf push_front
  9. #define double long double
  10.  
  11. const ll base = 1e9;
  12. const double EPS = 0.000001;
  13.  
  14. signed main()
  15. {
  16.     ios_base::sync_with_stdio(false);
  17.  
  18.     ll n, a, b, c, aa, bb, cc, x1, x2, y1, y2, z1, z2, sqr;
  19.     cin >> n >> a >> b >> c;
  20.  
  21.     if (n < a+b+c) {
  22.         cout << "0 0 0";
  23.         return 0;
  24.     }
  25.  
  26.     aa = 1;
  27.     bb = 1;
  28.     cc = 1;
  29.  
  30.     double tmp = 1.0 / 3.0, ff1 = 1.0, ss1 = 1.0, tt1 = 1.0;
  31.     sqr = (long long)(pow(n, tmp));
  32.  
  33.     vector<ll> v(4), ans(4), tt, last, ttt, answ;
  34.     last.pb(1);
  35.     v[1] = a;
  36.     v[2] = b;
  37.     v[3] = c;
  38.  
  39.     ans[1] = 1;
  40.     ans[2] = 1;
  41.     ans[3] = 1;
  42.     for (ll i = 1; i <= 3; ++i) {
  43.         for (ll j = 1; j <= 3; ++j) {
  44.             if (i == j)
  45.                 continue;
  46.             for (ll q = 1; q <= 3; ++q) {
  47.                 if (i == q || j == q)
  48.                     continue;
  49.  
  50.                 a = v[i];
  51.                 b = v[j];
  52.                 c = v[q];
  53.  
  54.                 x1 = (n / (3*a));
  55.                 for (ll z = x1 - sqr - 1; z <= x1 + sqr + 1; ++z) {
  56.                     y1 = (n - a*z) / (2*b);
  57.                     //cout << z << " " << y1 << "\n";
  58.                     for (ll zz = y1 - sqr - 1; zz <= y1 + sqr + 1; ++zz) {
  59.                         z1 = (n - a*z - b*zz) / c;
  60.                         if (z1*c > n || zz*b > n || z*a > n || z1 >= n || zz >= n || z >= n)
  61.                             continue;
  62.                         if (z*a + zz*b + z1*c > n)
  63.                             continue;
  64.  
  65.                         double ff = z, ss = zz, tt = z1;
  66.  
  67.                         //if (ff*ss*tt - ff1*ss1*tt1 > EPS) {
  68.                         if ((double)z * (double)zz * (double)z1 - (double)aa * (double)bb * (double)cc > EPS) {
  69.                             aa = z;
  70.                             bb = zz;
  71.                             cc = z1;
  72.  
  73.                             ff1 = ff;
  74.                             ss1 = ss;
  75.                             tt1 = tt;
  76.  
  77.                             ans[i] = z;
  78.                             ans[j] = zz;
  79.                             ans[q] = z1;
  80.  
  81.                         }
  82.                     }
  83.                 }
  84.                 //cout << "\n";
  85.             }
  86.         }
  87.     }
  88.  
  89.     cout << ans[1]*v[1] << " " << ans[2]*v[2] << " " << ans[3]*v[3];
  90.     return 0;
  91. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement