bingxuan9112

7-11便利序列(迴圈硬幹by Joylintp)

Nov 27th, 2019
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.18 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. #define int long long
  3.  
  4. using namespace std;
  5.  
  6. bool cmp(int a, int b)
  7. {
  8.     if (a % 10 < b % 10)
  9.         return true;
  10.     return false;
  11. }
  12.  
  13. signed main()
  14. {
  15.     ios_base::sync_with_stdio(false);
  16.     cin.tie(0);
  17.  
  18.     int n, arr[1001];
  19.     cin >> n;
  20.     for (int i = 1; i <= n; i++)
  21.         cin >> arr[i];
  22.  
  23.     int q, a, b, c;
  24.     string s;
  25.     cin >> q;
  26.     while (q--)
  27.     {
  28.         cin >> s;
  29.         if (s == "SWAP")
  30.             cin >> a >> b, swap(arr[a], arr[b]);
  31.         else if (s == "MOD")
  32.         {
  33.             cin >> a >> b >> c;
  34.             for (int i = a; i <= b; i++)
  35.                 arr[i] = c;
  36.         }
  37.         else if (s == "ENUM")
  38.         {
  39.             cin >> a >> b >> c;
  40.             for (int i = a; i <= b; i++)
  41.                 arr[i] = c + i - a;
  42.         }
  43.         else if (s == "SORT")
  44.         {
  45.             cin >> a >> b;
  46.             vector<int> v;
  47.             for (int i = a; i <= b; i++)
  48.                 v.push_back(arr[i]);
  49.             sort(v.begin(), v.end());
  50.             for (int i = a; i <= b; i++)
  51.                 arr[i] = v[i - a];
  52.         }
  53.         else if (s == "TROS")
  54.         {
  55.             cin >> a >> b;
  56.             vector<int> v;
  57.             for (int i = a; i <= b; i++)
  58.                 v.push_back(arr[i]);
  59.             sort(v.begin(), v.end(), greater<int>());
  60.             for (int i = a; i <= b; i++)
  61.                 arr[i] = v[i - a];
  62.         }
  63.         else if (s == "REV")
  64.         {
  65.             cin >> a >> b;
  66.             vector<int> v;
  67.             for (int i = a; i <= b; i++)
  68.                 v.push_back(arr[i]);
  69.             reverse(v.begin(), v.end());
  70.             for (int i = a; i <= b; i++)
  71.                 arr[i] = v[i - a];
  72.         }
  73.         else if (s == "DIV10")
  74.         {
  75.             cin >> a >> b;
  76.             vector<int> v;
  77.             for (int i = a; i <= b; i++)
  78.                 v.push_back(arr[i]);
  79.             stable_sort(v.begin(), v.end(), cmp);
  80.             for (int i = a; i <= b; i++)
  81.                 arr[i] = v[i - a];
  82.         }
  83.         else if (s == "ROT")
  84.         {
  85.             cin >> a >> b >> c;
  86.             vector<int> v;
  87.             for (int i = a; i <= b; i++)
  88.                 v.push_back(arr[i]);
  89.             for (int i = a; i < a + c - b; i++)
  90.                 arr[i] = arr[b + i - a + 1];
  91.             for (int i = a + c - b; i <= c; i++)
  92.                 arr[i] = v[i - a - c + b];
  93.         }
  94.         else if (s == "INC")
  95.         {
  96.             cin >> a >> b;
  97.             vector<int> v;
  98.             for (int i = a; i <= b; i++)
  99.                 v.push_back(arr[i]);
  100.             next_permutation(v.begin(), v.end());
  101.             for (int i = a; i <= b; i++)
  102.                 arr[i] = v[i - a];
  103.         }
  104.         else if (s == "DEC")
  105.         {
  106.             cin >> a >> b;
  107.             vector<int> v;
  108.             for (int i = a; i <= b; i++)
  109.                 v.push_back(arr[i]);
  110.             prev_permutation(v.begin(), v.end());
  111.             for (int i = a; i <= b; i++)
  112.                 arr[i] = v[i - a];
  113.         }
  114.         else if (s == "COMP")
  115.         {
  116.             cin >> a >> b;
  117.             vector<int> v;
  118.             for (int i = a; i <= b; i++)
  119.                 v.push_back(arr[i]);
  120.             sort(v.begin(), v.end());
  121.             for (int i = a; i <= b; i++)
  122.                 arr[i] = lower_bound(v.begin(), v.end(), arr[i]) - v.begin() + 1;
  123.         }
  124.         else if (s == "MIN")
  125.         {
  126.             cin >> a >> b;
  127.             int ans = 1e18;
  128.             for (int i = a; i <= b; i++)
  129.                 ans = min(ans, arr[i]);
  130.             cout << ans << '\n';
  131.         }
  132.         else if (s == "MAX")
  133.         {
  134.             cin >> a >> b;
  135.             int ans = -1e18;
  136.             for (int i = a; i <= b; i++)
  137.                 ans = max(ans, arr[i]);
  138.             cout << ans << '\n';
  139.         }
  140.         else if (s == "SUM")
  141.         {
  142.             cin >> a >> b;
  143.             int ans = 0;
  144.             for (int i = a; i <= b; i++)
  145.                 ans += arr[i];
  146.             cout << ans << '\n';
  147.         }
  148.         else if (s == "PROD")
  149.         {
  150.             cin >> a >> b;
  151.             int ans = 1;
  152.             for (int i = a; i <= b; i++)
  153.                 ans = abs(ans * arr[i]) % 998244353;
  154.             cout << ans << '\n';
  155.         }
  156.         else if (s == "GCD")
  157.         {
  158.             cin >> a >> b;
  159.             int ans = 0;
  160.             for (int i = a; i <= b; i++)
  161.                 ans = __gcd(ans, abs(arr[i]));
  162.             cout << ans << '\n';
  163.         }
  164.         else if (s == "CNT")
  165.         {
  166.             cin >> a >> b >> c;
  167.             int ans = 0;
  168.             for (int i = a; i <= b; i++)
  169.                 ans += (arr[i] == c);
  170.             cout << ans << '\n';
  171.         }
  172.         else if (s == "NTH")
  173.         {
  174.             cin >> a >> b >> c;
  175.             vector<int> v;
  176.             for (int i = a; i <= b; i++)
  177.                 v.push_back(arr[i]);
  178.             sort(v.begin(), v.end());
  179.             cout << v[c - 1] << '\n';
  180.         }
  181.         else;
  182.     }
  183.  
  184.     return 0;
  185. }
  186.  
  187. //      *   *  *****  *   *  *   *
  188. //     *   *  *      **  *  *   *
  189. //    *****  *****  * * *  *   *
  190. //   *   *      *  *  **  *   *
  191. //  *   *  *****  *   *   ***
Add Comment
Please, Sign In to add comment