DuongNhi99

SHHV

Dec 3rd, 2020
147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.30 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #define ll long long
  3. using namespace std;
  4.  
  5. ll n, sh;
  6. ll a[20];
  7. ll gthua[20];
  8.  
  9. void Vitri() {
  10.     ll vt[20];
  11.  
  12.     for(int i = 1; i <= 12; i++)
  13.         vt[i] = i;
  14.  
  15.     ll res = 1;
  16.     for(int i = 1; i <= n; i++) {
  17.         res += (vt[a[i]] - 1) * gthua[n-i];
  18.         for(int j = (a[i]) + 1; j <= n; j++)
  19.             vt[j]--;
  20.     }
  21.     cout << res << '\n';
  22. }
  23.  
  24. void Hoanvi() {
  25.     ll vt[20], kq[20];
  26.  
  27.     for(int i = 1; i <= n; i++)
  28.         vt[i] = i;
  29.  
  30.     int t = 1, l = 0;
  31.     for(int i = 1; i <= n; i++) {
  32.         for(int j = 1; j <= n; j++)
  33.             if (t + j * gthua[n-i] > sh) {
  34.                 l = j-1; break;
  35.             }
  36.         t += l*gthua[n-i];
  37.         kq[i] = vt[l+1];
  38.         for(int j = l+1; j <= n; j++)
  39.             vt[j] = vt[j+1];
  40.     }
  41.  
  42.     for(int i = 1; i <= n; i++)
  43.         cout << kq[i] << ' ';
  44. }
  45.  
  46. int main()
  47. {
  48.     //freopen("SHHV.inp", "r", stdin);
  49.     //freopen("SHHV.out", "w", stdout);
  50.     ios_base::sync_with_stdio(false);
  51.     cin.tie(NULL); cout.tie(NULL);
  52.  
  53.     ll x;
  54.     n = 0;
  55.     while(cin >> x) {
  56.         n++;
  57.         a[n] = x;
  58.     }
  59.     sh = a[n];
  60.     a[n] = 0;
  61.     n--;
  62.  
  63.     gthua[0] = 1;
  64.     for(int i = 1; i <= n; i++)
  65.         gthua[i] = gthua[i-1]*i;
  66.  
  67.     Vitri();
  68.     Hoanvi();
  69.  
  70.     return 0;
  71. }
  72.  
Advertisement
Add Comment
Please, Sign In to add comment