Pagini recente » Cod sursa (job #1993298) | Cod sursa (job #1993215) | Cod sursa (job #2769014) | Cod sursa (job #1768479) | Cod sursa (job #1816863)
#include <fstream>
#include <cstdlib>
#include <ctime>
#include <algorithm>
#include <cmath>
#include <climits>
#include <cstring>
std::ifstream in ( "secv8.in" );
std::ofstream out( "secv8.out" );
const int DIM = 1e6 + 5;
int arr[DIM];
void insert( int pos, int key, int &n ) {
memmove( arr + pos + 1, arr + pos, (n - pos + 1) * sizeof(int) );
n ++; arr[pos] = key;
return; }
void erase( int pos1, int pos2, int &n ) {
memmove( arr + pos1, arr + pos2 + 1, (n - pos2) * sizeof(int) );
n -= pos2 - pos1 + 1;
return; }
void access( int pos, int &n ) {
out << arr[pos] << "\n";
return; }
void reverse( int pos1, int pos2, int &n ) {
std::reverse( arr + pos1, arr + pos2 + 1 );
return; }
void dump( int &n ) {
for( int i = 1; i <= n; i ++ ) {
out << arr[i] << " "; }
out << "\n";
return; }
int main( int argc, const char *argv[] ) {
std::ios::sync_with_stdio( false );
int m, n = 0, h; in >> m >> h;
for( int i = 1; i <= m; i ++ ) {
char ch; in >> ch;
switch( ch ) {
case 'I': {
int k, e; in >> k >> e;
insert( k, e, n );
break; }
case 'A': {
int k; in >> k;
access( k, n );
break; }
case 'R': {
int p, q; in >> p >> q;
reverse( p, q, n );
break; }
case 'D': {
int p, q; in >> p >> q;
erase( p, q, n );
break; } } }
dump( n ); out << "\n";
return 0; }