Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdio>
- #include <cstring>
- #include <queue>
- #include <algorithm>
- #include <iostream>
- #include <vector>
- using namespace std;
- int kong(int x) {
- if (x < 0) x += 5;
- return x % 5;
- }
- int n,sol;
- char s[100100],s1[100100];
- void print() {
- for (int i = 0;i < n; i++)
- printf("%c",s1[i]);
- printf("\n");
- }
- void kreni(int cvor,int k) {
- k++;
- if (k == n) {
- print();
- sol = 0;
- return;
- }
- int next;
- if (cvor < 5) {
- next = kong(cvor + 1);
- if (next + 'A' == s[k]) {
- s1[k] = next + 48;
- kreni(next, k);
- }
- next = kong(cvor - 1);
- if (next + 'A' == s[k]) {
- s1[k] = next + 48;
- kreni(next, k);
- }
- if (cvor + 'A' == s[k]) {
- s1[k] = cvor + 5 + 48;
- kreni(cvor + 5, k );
- }
- }
- else {
- next = kong(cvor + 3) + 5;
- if ((next - 5) + 'A' == s[k]) {
- s1[k] = next + 48;
- kreni(next, k );
- }
- next = kong(cvor + 2) + 5;
- if ((next - 5) + 'A' == s[k]) {
- s1[k] = next + 48;
- kreni(next, k );
- }
- if ((cvor - 5) + 'A' == s[k]) {
- s1[k] = cvor - 5 + 48;
- kreni(cvor - 5, k);
- }
- }
- }
- void solve() {
- scanf("%s",s);
- n = strlen(s);
- sol = -1;
- s1[0] = (s[0] - 'A') + 48;
- kreni(s[0] - 'A', 0);
- if (sol == 0) return;
- s1[0] = s[0] - 'A' + 5 + 48;
- kreni(s[0] - 'A' + 5, 0);
- if (sol == -1) printf("%d\n",sol);
- }
- int main() {
- int t;
- scanf("%d",&t);
- while (t--) solve();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement