# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
13317 | woqja125 | 입자 가속기 (IZhO11_collider) | C++98 | 76 ms | 10348 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include<stdio.h>
#include<vector>
int buk[1010][2100];
int bs[1010];
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+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%1000 == 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 |
---|---|---|---|---|
Fetching results... |