Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- #define int long long
- using namespace std;
- bool cmp(int a, int b)
- {
- if (a % 10 < b % 10)
- return true;
- return false;
- }
- signed main()
- {
- ios_base::sync_with_stdio(false);
- cin.tie(0);
- int n, arr[1001];
- cin >> n;
- for (int i = 1; i <= n; i++)
- cin >> arr[i];
- int q, a, b, c;
- string s;
- cin >> q;
- while (q--)
- {
- cin >> s;
- if (s == "SWAP")
- cin >> a >> b, swap(arr[a], arr[b]);
- else if (s == "MOD")
- {
- cin >> a >> b >> c;
- for (int i = a; i <= b; i++)
- arr[i] = c;
- }
- else if (s == "ENUM")
- {
- cin >> a >> b >> c;
- for (int i = a; i <= b; i++)
- arr[i] = c + i - a;
- }
- else if (s == "SORT")
- {
- cin >> a >> b;
- vector<int> v;
- for (int i = a; i <= b; i++)
- v.push_back(arr[i]);
- sort(v.begin(), v.end());
- for (int i = a; i <= b; i++)
- arr[i] = v[i - a];
- }
- else if (s == "TROS")
- {
- cin >> a >> b;
- vector<int> v;
- for (int i = a; i <= b; i++)
- v.push_back(arr[i]);
- sort(v.begin(), v.end(), greater<int>());
- for (int i = a; i <= b; i++)
- arr[i] = v[i - a];
- }
- else if (s == "REV")
- {
- cin >> a >> b;
- vector<int> v;
- for (int i = a; i <= b; i++)
- v.push_back(arr[i]);
- reverse(v.begin(), v.end());
- for (int i = a; i <= b; i++)
- arr[i] = v[i - a];
- }
- else if (s == "DIV10")
- {
- cin >> a >> b;
- vector<int> v;
- for (int i = a; i <= b; i++)
- v.push_back(arr[i]);
- stable_sort(v.begin(), v.end(), cmp);
- for (int i = a; i <= b; i++)
- arr[i] = v[i - a];
- }
- else if (s == "ROT")
- {
- cin >> a >> b >> c;
- vector<int> v;
- for (int i = a; i <= b; i++)
- v.push_back(arr[i]);
- for (int i = a; i < a + c - b; i++)
- arr[i] = arr[b + i - a + 1];
- for (int i = a + c - b; i <= c; i++)
- arr[i] = v[i - a - c + b];
- }
- else if (s == "INC")
- {
- cin >> a >> b;
- vector<int> v;
- for (int i = a; i <= b; i++)
- v.push_back(arr[i]);
- next_permutation(v.begin(), v.end());
- for (int i = a; i <= b; i++)
- arr[i] = v[i - a];
- }
- else if (s == "DEC")
- {
- cin >> a >> b;
- vector<int> v;
- for (int i = a; i <= b; i++)
- v.push_back(arr[i]);
- prev_permutation(v.begin(), v.end());
- for (int i = a; i <= b; i++)
- arr[i] = v[i - a];
- }
- else if (s == "COMP")
- {
- cin >> a >> b;
- vector<int> v;
- for (int i = a; i <= b; i++)
- v.push_back(arr[i]);
- sort(v.begin(), v.end());
- for (int i = a; i <= b; i++)
- arr[i] = lower_bound(v.begin(), v.end(), arr[i]) - v.begin() + 1;
- }
- else if (s == "MIN")
- {
- cin >> a >> b;
- int ans = 1e18;
- for (int i = a; i <= b; i++)
- ans = min(ans, arr[i]);
- cout << ans << '\n';
- }
- else if (s == "MAX")
- {
- cin >> a >> b;
- int ans = -1e18;
- for (int i = a; i <= b; i++)
- ans = max(ans, arr[i]);
- cout << ans << '\n';
- }
- else if (s == "SUM")
- {
- cin >> a >> b;
- int ans = 0;
- for (int i = a; i <= b; i++)
- ans += arr[i];
- cout << ans << '\n';
- }
- else if (s == "PROD")
- {
- cin >> a >> b;
- int ans = 1;
- for (int i = a; i <= b; i++)
- ans = abs(ans * arr[i]) % 998244353;
- cout << ans << '\n';
- }
- else if (s == "GCD")
- {
- cin >> a >> b;
- int ans = 0;
- for (int i = a; i <= b; i++)
- ans = __gcd(ans, abs(arr[i]));
- cout << ans << '\n';
- }
- else if (s == "CNT")
- {
- cin >> a >> b >> c;
- int ans = 0;
- for (int i = a; i <= b; i++)
- ans += (arr[i] == c);
- cout << ans << '\n';
- }
- else if (s == "NTH")
- {
- cin >> a >> b >> c;
- vector<int> v;
- for (int i = a; i <= b; i++)
- v.push_back(arr[i]);
- sort(v.begin(), v.end());
- cout << v[c - 1] << '\n';
- }
- else;
- }
- return 0;
- }
- // * * ***** * * * *
- // * * * ** * * *
- // ***** ***** * * * * *
- // * * * * ** * *
- // * * ***** * * ***
Add Comment
Please, Sign In to add comment