Cod sursa(job #3135619)

Utilizator alexandramocanu181Mocanu Alexandra alexandramocanu181 Data 3 iunie 2023 20:38:12
Problema Secv8 Scor 60
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.41 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>

void insert_element(std::vector<int>& S, int k, int e) {
S.insert(S.begin() + k - 1, e);
}

int access_element(const std::vector<int>& S, int k) {
return S[k - 1];
}

void reverse_range(std::vector<int>& S, int i, int j) {
std::reverse(S.begin() + i - 1, S.begin() + j);
}

void delete_range(std::vector<int>& S, int i, int j) {
S.erase(S.begin() + i - 1, S.begin() + j);
}

int main() {
std::ifstream fin("secv8.in");
std::ofstream fout("secv8.out");

int num_operations, has_reverse;
fin >> num_operations >> has_reverse;

std::vector<int> S;
std::vector<int> results;

for (int i = 0; i < num_operations; i++) {
    char operation;
    int k, e, x, y;
    fin >> operation;

    if (operation == 'I') {
        fin >> k >> e;
        insert_element(S, k, e);
    } else if (operation == 'A') {
        fin >> k;
        results.push_back(access_element(S, k));
    } else if (operation == 'R') {
        fin >> x >> y;
        reverse_range(S, x, y);
    } else if (operation == 'D') {
        fin >> x >> y;
        delete_range(S, x, y);
    }
}

for (std::vector<int>::size_type i = 0; i < results.size(); i++) {
    fout << results[i] << '\n';
}

for (std::vector<int>::size_type i = 0; i < S.size(); i++) {
    fout << S[i] << ' ';
}

fout << '\n';

fin.close();
fout.close();

return 0;
}