답안 #13318

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
13318 2015-02-11T16:31:31 Z woqja125 입자 가속기 (IZhO11_collider) C++
90 / 100
94 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++;}
			}
			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("%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;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 10348 KB Output is correct
2 Incorrect 19 ms 10348 KB Output isn't correct
3 Correct 11 ms 10348 KB Output is correct
4 Correct 36 ms 10348 KB Output is correct
5 Correct 60 ms 10348 KB Output is correct
6 Correct 64 ms 10348 KB Output is correct
7 Correct 74 ms 10348 KB Output is correct
8 Correct 37 ms 10348 KB Output is correct
9 Correct 94 ms 10348 KB Output is correct
10 Correct 68 ms 10348 KB Output is correct