Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- const int N = 2001;
- string com;
- int n,q,v[N];
- signed main() {
- ios_base::sync_with_stdio(0), cin.tie(0);
- cin >> n;
- for(int i = 0; i < n; i++) cin >> v[i];
- cin >> q;
- while(q--) {
- int a,b,c;
- cin >> com;
- if(com == "SWAP") {
- cin >> a >> b, --a, --b;
- swap(v[a],v[b]);
- }else if(com == "MOD") {
- cin >> a >> b >> c, --a;
- fill(v+a,v+b,c);
- }else if(com == "ENUM") {
- cin >> a >> b >> c, --a;
- iota(v+a,v+b,c);
- }else if(com == "SORT") {
- cin >> a >> b, --a;
- sort(v+a,v+b);
- }else if(com == "TROS") {
- cin >> a >> b, --a;
- sort(v+a,v+b,greater<int>());
- }else if(com == "REV") {
- cin >> a >> b, --a;
- reverse(v+a,v+b);
- }else if(com == "DIV10") {
- cin >> a >> b, --a;
- stable_sort(v+a,v+b,[](int x,int y){return x%10 < y%10;});
- }else if(com == "ROT") {
- cin >> a >> c >> b, --a;
- rotate(v+a,v+c,v+b);
- }else if(com == "INC") {
- cin >> a >> b, --a;
- next_permutation(v+a,v+b);
- }else if(com == "DEC") {
- cin >> a >> b, --a;
- prev_permutation(v+a,v+b);
- }else if(com == "COMP") {
- cin >> a >> b, --a;
- vector<int> u(v+a,v+b);
- sort(u.begin(),u.end());
- for(int i = a; i < b; i++) v[i] = lower_bound(u.begin(),u.end(),v[i])-u.begin()+1;
- }else if(com == "MIN") {
- cin >> a >> b, --a;
- cout << *min_element(v+a,v+b) << '\n';
- }else if(com == "MAX") {
- cin >> a >> b, --a;
- cout << *max_element(v+a,v+b) << '\n';
- }else if(com == "SUM") {
- cin >> a >> b, --a;
- cout << accumulate(v+a,v+b,0LL) << '\n';
- }else if(com == "PROD") {
- cin >> a >> b, --a;
- cout << accumulate(v+a,v+b,1LL,[](long long a,long long b){return abs(a)*abs(b)%998244353;}) << '\n';
- }else if(com == "GCD") {
- cin >> a >> b, --a;
- cout << accumulate(v+a,v+b,0,__gcd<int>) << '\n';
- }else if(com == "CNT") {
- cin >> a >> b >> c, --a;
- cout << count(v+a,v+b,c) << '\n';
- }else if(com == "NTH") {
- cin >> a >> b >> c, --a,--c;
- vector<int> u(v+a,v+b);
- nth_element(u.begin(),u.begin()+c,u.end());
- cout << u.at(c) << '\n';
- }
- }
- }
Add Comment
Please, Sign In to add comment