13692 - Aftermath's Ideology
unknown
c_cpp
3 years ago
1.8 kB
5
Indexable
#include <stdio.h> #include <string.h> #define MAX_char 1000000 int n, tmp; char alph[100000][26]; char s[MAX_char + 1]; void init(); void cpyalph(); void swap(int a, int b); int main(void) { scanf("%s", s); scanf("%d", &n); int op[n], first[n], second[n]; for (int i = 0; i < n; ++i) { scanf("%d", &op[i]); if (op[i] == 1) { char a, b; scanf(" %c %c", &a, &b); first[i] = a; second[i] = b; } else if (op[i] == 2) { int a; char b; scanf(" %d %c", &a, &b); first[i] = a; second[i] = b; } else if (op[i] == 3) { int a, b; scanf(" %d %d", &a, &b); first[i] = a; second[i] = b; } } init(); tmp = n; for (int i = n - 1; i >= 0; --i) { tmp--; if (op[i] == 1) { alph[tmp][first[i] - 'a'] = (char)second[i]; } cpyalph(); } for (int i = 0, l = strlen(s); i < l; ++i) { s[i] = alph[0][s[i] - 'a']; } for (int i = 0; i < n; ++i) { if (op[i] == 2) { s[first[i]] = alph[i][second[i] - 'a']; } else if (op[i] == 3) { swap(first[i], second[i]); } } puts(s); return 0; } void init() { for (int i = 0; i < n; ++i) { for (int j = 0; j < 26; ++j) { alph[i][j] = j + 'a'; } } } void cpyalph() { if (tmp != 0) { for (int i = 0; i < 26; ++i) { alph[tmp - 1][i] = alph[tmp][i]; } } } void swap(int a, int b) { char tmp; tmp = s[a]; s[a] = s[b]; s[b] = tmp; }
Editor is loading...