Submission #13320

# Submission time Handle Problem Language Result Execution time Memory
13320 2015-02-11T16:42:55 Z woqja125 Collider (IZhO11_collider) C++
100 / 100
91 ms 10348 KB
#include<stdio.h>
#include<vector>
int buk[1010][2100];
int bs[1010];
char in[1000100];
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+bs[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+bs[bn] <= b) i+=bs[bn++];
				else{i++;j++;}
			}
			if(j==0 && bn!=0)
			{
				bn--;
				j = bs[bn];
			}
			bs[bn]++;
			for(k=bs[bn]-1; 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+bs[bn] <= a) i+=bs[bn++];
				else{i++;j++;}
			}
//			printf("%d %d %d ", bn, j, bs[bn]);
			printf("%c\n", buk[bn][j]+'x');
		}
		if(m%900 == 0)
		{
			int l = 0;
			for(i=0; l<n; i++)
			{
				for(j=0; j<bs[i]; j++) in[l++] = buk[i][j];
				bs[i] = 0;
			}
	
			j=0;
			for(i=0; j<n; i++)
			{
				for(k=j; k<j+1000 && k<n; k++)
				{
					buk[i][k-j] = in[k];
					bs[i]++;
				}
				j = k;
			}

		}
	}
	return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 0 ms 10348 KB Output is correct
2 Correct 23 ms 10348 KB Output is correct
3 Correct 14 ms 10348 KB Output is correct
4 Correct 30 ms 10348 KB Output is correct
5 Correct 52 ms 10348 KB Output is correct
6 Correct 63 ms 10348 KB Output is correct
7 Correct 77 ms 10348 KB Output is correct
8 Correct 31 ms 10348 KB Output is correct
9 Correct 91 ms 10348 KB Output is correct
10 Correct 55 ms 10348 KB Output is correct