Submission #18518

# Submission time Handle Problem Language Result Execution time Memory
18518 2016-02-07T07:53:02 Z suhgyuho_william Collider (IZhO11_collider) C++
0 / 100
122 ms 13900 KB
#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(sum < x && x <= sum+cnt[i]){
			b = i;
			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<N; i++){
		bucket[i/MOD][i%MOD] = tmp[i];
		cnt[i/MOD]++;
	}
}

int main(){
	int i,j;
	int x,y;
	int v;
	char op[5];
	//freopen("input.txt","r",stdin);

	scanf("%d %d",&N,&M);
	scanf("%s",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);
			v = bucket[b][t];
			pop(b,t);
			if(x < y) where(y-1);
			else where(y);
			push(b,t,v);
		}else if(op[0] == 'q'){
			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
1 Incorrect 0 ms 13900 KB Output isn't correct
2 Incorrect 12 ms 13900 KB Output isn't correct
3 Incorrect 9 ms 13900 KB Output isn't correct
4 Incorrect 37 ms 13900 KB Output isn't correct
5 Incorrect 72 ms 13900 KB Output isn't correct
6 Incorrect 94 ms 13900 KB Output isn't correct
7 Incorrect 98 ms 13900 KB Output isn't correct
8 Incorrect 50 ms 13900 KB Output isn't correct
9 Incorrect 122 ms 13900 KB Output isn't correct
10 Incorrect 91 ms 13900 KB Output isn't correct