# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
18512 | suhgyuho_william | Collider (IZhO11_collider) | C++98 | 127 ms | 13900 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <stdio.h>
int N,M,last;
int bucket[1010][2010],cnt[1010];
char s[1000010];
#define MOD 1000
int b,t;
void where(int x){
int i,sum = 0;
for(i=0; i<=last; i++){
if(i == last){
b = last;
break;
}
if(sum+cnt[i] > x){
b = i-1;
break;
}
sum += cnt[i];
}
t = x-sum-1;
}
void pop(int x,int y){
int i;
for(i=y; i<cnt[x]-1; i++){
bucket[x][i] = bucket[x][i+1];
}
cnt[x]--;
}
void push(int x,int y,int v){
int i;
for(i=cnt[x]-1; i>=y; i--){
bucket[x][i+1] = bucket[x][i];
}
bucket[x][y] = v;
cnt[x]++;
}
int tmp[1000010];
void setting(){
int i,j,rear;
rear = -1;
for(i=0; i<=last; i++){
for(j=0; j<cnt[i]; j++){
rear++;
tmp[rear] = bucket[i][j];
}
cnt[i] = 0;
}
for(i=0; i<=rear; i++){
bucket[i/MOD][i%MOD] = tmp[i];
cnt[i/MOD]++;
}
}
int main(){
int i,j;
int x,y;
int b1,t1,b2,t2,v;
char op[5];
//freopen("input.txt","r",stdin);
scanf("%d %d\n",&N,&M);
gets(s);
for(i=0; i<N; i++){
bucket[i/MOD][i%MOD] = s[i]-'x'+1;
cnt[i/MOD]++;
}
last = ((N-1)/MOD);
for(i=1; i<=M; i++){
scanf("%s",op);
if(op[0] == 'a'){
scanf("%d %d",&x,&y);
if(x == y) continue;
where(x);
b1 = b; t1 = t; v = bucket[b][t];
where(y);
b2 = b; t2 = t;
pop(b1,t1);
push(b2,t2,v);
}else{
scanf("%d",&x);
where(x);
printf("%c\n",'w'+bucket[b][t]);
}
if(i%MOD == 0) setting();
}
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |