Submission #13306

#TimeUsernameProblemLanguageResultExecution timeMemory
13306woqja125Collider (IZhO11_collider)C++98
10 / 100
61 ms9888 KiB
#include<stdio.h>
#include<vector>
int buk[1001][2001];
int bs[1001];
char in[1000001];
int main()
{
	int n, m;
	int i, j, k;
	int a, b, bn;
	scanf("%d%d", &n, &m);
	scanf("%s", in);
	j=0;
	for(i=0; j<n; i++)
	{
		for(k=j; k<j+1000 && k<n; k++)
		{
			buk[i][k-j] = in[k]-'x';
			bs[i]++;
		}
		j = k;
	}
	for(;m--;)
	{
		scanf("%s", in);
		if(in[0] == 'a')
		{
			scanf("%d%d", &a, &b); a--; b--;
			int t;
			bn = 0;
			j = 0;
			for(i=0; i<a; )
			{
				if(i+in[bn] < a) i+=bs[bn++];
				else{i++;j++;}
			}
			bs[bn]--;
			t = buk[bn][j];
			for(; j<bs[bn]; j++) buk[bn][j] = buk[bn][j+1];
			//
			bn = 0;
			j = 0;
			for(i=0; i<b; )
			{
				if(i+in[bn] < b) i+=bs[bn++];
				else{i++;j++;}
			}
			bs[bn]++;
			for(k=bs[bn]; k>j; k--) buk[bn][k] = buk[bn][k-1];
			buk[bn][j] = t;
		}
		else
		{
			scanf("%d", &a);a--;

			bn = 0;
			j = 0;
			for(i=0; i<a; )
			{
				if(i+in[bn] < a) i+=bs[bn++];
				else{i++;j++;}
			}
			printf("%c\n", buk[bn][j]+'x');
		}
	}
	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...