Submission #13317

#TimeUsernameProblemLanguageResultExecution timeMemory
13317woqja125Collider (IZhO11_collider)C++98
90 / 100
76 ms10348 KiB
#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 timeMemoryGrader output
Fetching results...