Cod sursa(job #2751888)

Utilizator AndreeaGeamanuAndreea AndreeaGeamanu Data 16 mai 2021 00:46:39
Problema Secv8 Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.36 kb
#include <iostream>
#include <fstream>
#include <bits/stdc++.h>

using namespace std;
ifstream f("secv8.in");
ofstream g("secv8.out");

void insereaza(int k, int e, list<int> &S){
    list<int>::iterator it=S.begin();
    advance(it, k-1);
    S.insert(it, e);
}

void acceseaza(int k, list<int> &S){
    list<int>::iterator it=S.begin();
    advance(it, k-1);
    g<<*it<<"\n";
}

void inverseaza(int i, int j, list<int> &S){
    list<int>::iterator st, dr;
    st=S.begin();
    dr=S.begin();
    advance(st, i-1);
    advance(dr, j);
    reverse(st, dr);
}

void sterge(int i, int j, list<int> &S){
    list<int>::iterator st, dr;
    st=S.begin();
    dr=S.begin();
    advance(st, i-1);
    advance(dr, j);
    S.erase(st, dr);
}

int main(){
    int n,k,e,i,j;
    bool r;
    char ch;
    list <int> S;
    f>>n;
    f>>r;
    for(int p=0; p<n; p++){
        f>>ch;
        if(ch=='I'){
            f>>k>>e;
            insereaza(k,e,S);
        }
        if(ch=='A'){
            f>>k;
            acceseaza(k,S);
        }
        if(ch=='R'){
            f>>i>>j;
            inverseaza(i,j,S);
        }
        if(ch=='D'){
            f>>i>>j;
            sterge(i,j,S);
        }
    }
    for(auto it=S.begin(); it!=S.end(); ++it){
        g<<*it<<" ";
    }

    f.close();
    g.close();
    return 0;
}