Cod sursa(job #2747158)

Utilizator linte_robertLinte Robert linte_robert Data 28 aprilie 2021 21:16:32
Problema Secv8 Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.58 kb
#include <iostream>
#include <vector>
#include <fstream>
using namespace std;

void insert( vector < int > &lista, int k, int e ){
    lista.push_back(0);
    for( int i = lista.size()-1; i >= k; i-- ){
        lista[i] = lista[i-1];
    }
    lista[k-1] = e;
}
void reverse( vector < int > &lista, int i, int j ){
    int contor = j-1, x;
    for( int k = i-1; k < (i+j)/2; k++ ){
        x = lista[k];
        lista[k] = lista[contor];
        lista[contor] = x;
        contor--;
    }
}
void delete1( vector < int > &lista, int i, int j ){
    int contor = j, k = i-1;
    while( contor < lista.size() ){
        lista[k] = lista[contor];
        contor++;
        k++;
    }
    for( int k = i; k <= j; k++ ){
        lista.pop_back();
    }
}
int main(){
    vector < int > v;
    int n, z;
    ifstream fin("secv8.in");
    ofstream fout("secv8.out")
    fin >> n >> z;
    for( int i = 0; i < n; i++ ){
        char operatie[10];
        fin >> operatie;
        if( operatie[0] == 'I' ){
            int k, e;
            fin >> k >> e;
            insert( v, k, e );
        }
        if( operatie[0] == 'A' ){
            int k;
            fin >> k;
            fout << v[k-1] << endl;
        }
        if( operatie[0] == 'R' ){
            int ii, ij;
            fin >> ii >> ij;
            reverse( v, ii, ij );
        }
        if( operatie[0] == 'D' ){
            int ii, ij;
            fin >> ii >> ij;
            delete1( v, ii, ij );
        }
    }
    for( int i = 0; i < v.size(); i++ ){
        fout << v[i] << " ";
    }
}