Cod sursa(job #393555)

Utilizator nandoLicker Nandor nando Data 9 februarie 2010 17:39:09
Problema Secv8 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <vector>
#include <iostream>
#include <fstream>

using namespace std;

unsigned int vec[250001];
unsigned int len=0;

void Insert(int k,int e){
	for(int i=len+1;i>=k;i--){
		vec[i]=vec[i-1];
	}
	len++;
	vec[k]=e;
}
void Delete(int beg,int end){
	for(int i=0;i<end-beg+1;i++){
		vec[beg+i]=vec[end+i+1];
	}
	len-=end-beg+1;
}
int Acess(int k){
	return vec[k];
}
void Reverse(int beg,int end){
	for(int i=0;i<end-beg;i++){
		int tmp=vec[beg+i];
		vec[beg+i]=vec[end-i];
		vec[end-i]=tmp;
	}
}

int main(){
	int nr,hr,op1,op2;
	char op;
	fstream fin("secv8.in",ios::in);
	fstream fout("secv8.out",ios::out);
	fin>>nr>>hr;
	for(int i=0;i<nr;i++){
		fin>>op;
		switch (op){
			case 'I':
				fin>>op1>>op2;
				Insert(op1,op2);
				break;
			case 'A':
				fin>>op1;
				fout<<Acess(op1)<<endl;
				break;
			case 'R':
				fin>>op1>>op2;
				Reverse(op1,op2);
				break;
			case 'D':
				fin>>op1>>op2;
				Delete(op1,op2);
				break;
			default:
				break;
		}
	}
	for(unsigned int i=1;i<=len;i++){
		fout<<vec[i]<<" ";
	}
	fin.close();
	fout.close();
}