fork download
  1. #pragma GCC optimize ("Ofast")
  2. #include<bits/stdc++.h>
  3. using namespace std;
  4. inline int my_getchar_unlocked(){
  5. static char buf[1048576];
  6. static int s = 1048576;
  7. static int e = 1048576;
  8. if(s == e && e == 1048576){
  9. e = fread_unlocked(buf, 1, 1048576, stdin);
  10. s = 0;
  11. }
  12. if(s == e){
  13. return EOF;
  14. }
  15. return buf[s++];
  16. }
  17. inline void rd(char &c){
  18. int i;
  19. for(;;){
  20. i = my_getchar_unlocked();
  21. if(i!=' '&&i!='\n'&&i!='\r'&&i!='\t'&&i!=EOF){
  22. break;
  23. }
  24. }
  25. c = i;
  26. }
  27. inline int rd(char c[]){
  28. int i;
  29. int sz = 0;
  30. for(;;){
  31. i = my_getchar_unlocked();
  32. if(i!=' '&&i!='\n'&&i!='\r'&&i!='\t'&&i!=EOF){
  33. break;
  34. }
  35. }
  36. c[sz++] = i;
  37. for(;;){
  38. i = my_getchar_unlocked();
  39. if(i==' '||i=='\n'||i=='\r'||i=='\t'||i==EOF){
  40. break;
  41. }
  42. c[sz++] = i;
  43. }
  44. c[sz]='\0';
  45. return sz;
  46. }
  47. struct MY_WRITER{
  48. char buf[1048576];
  49. int s;
  50. int e;
  51. MY_WRITER(){
  52. s = 0;
  53. e = 1048576;
  54. }
  55. ~MY_WRITER(){
  56. if(s){
  57. fwrite_unlocked(buf, 1, s, stdout);
  58. }
  59. }
  60. }
  61. ;
  62. MY_WRITER MY_WRITER_VAR;
  63. void my_putchar_unlocked(int a){
  64. if(MY_WRITER_VAR.s == MY_WRITER_VAR.e){
  65. fwrite_unlocked(MY_WRITER_VAR.buf, 1, MY_WRITER_VAR.s, stdout);
  66. MY_WRITER_VAR.s = 0;
  67. }
  68. MY_WRITER_VAR.buf[MY_WRITER_VAR.s++] = a;
  69. }
  70. inline void wt_L(char a){
  71. my_putchar_unlocked(a);
  72. }
  73. inline void wt_L(int x){
  74. int s=0;
  75. int m=0;
  76. char f[10];
  77. if(x<0){
  78. m=1;
  79. x=-x;
  80. }
  81. while(x){
  82. f[s++]=x%10;
  83. x/=10;
  84. }
  85. if(!s){
  86. f[s++]=0;
  87. }
  88. if(m){
  89. my_putchar_unlocked('-');
  90. }
  91. while(s--){
  92. my_putchar_unlocked(f[s]+'0');
  93. }
  94. }
  95. inline void wt_L(const char c[]){
  96. int i=0;
  97. for(i=0;c[i]!='\0';i++){
  98. my_putchar_unlocked(c[i]);
  99. }
  100. }
  101. int N;
  102. char S[1000000+2];
  103. char gen[10000000];
  104. int len;
  105. char res[27];
  106. char rev[27];
  107. int main(){
  108. int s;
  109. int i;
  110. int j;
  111. int k;
  112. N = rd(S);
  113. gen[len++] = 'A';
  114. for(i=(1);i<(23);i++){
  115. k = len;
  116. gen[len++] = 'A' + i;
  117. for(j=(0);j<(k);j++){
  118. gen[len++] = gen[j];
  119. }
  120. }
  121. for(s=(0);s<(2000000);s++){
  122. for(i=(0);i<(26);i++){
  123. res[i] = rev[i] = 0;
  124. }
  125. for(i=(0);i<(N);i++){
  126. if(rev[S[i]-'A'] == 0 && res[gen[i+s]-'A'] == 0){
  127. rev[S[i]-'A'] = gen[i+s];
  128. res[gen[i+s]-'A'] = S[i];
  129. }
  130. if(rev[S[i]-'A'] != gen[i+s] || res[gen[i+s]-'A'] != S[i]){
  131. goto cTE1_r3A;
  132. }
  133. }
  134. for(i=(0);i<(26);i++){
  135. for(j=(0);j<(26);j++){
  136. if(res[i]==0 && rev[j]==0){
  137. res[i] = 'A' + j;
  138. rev[j] = 'A' + i;
  139. }
  140. }
  141. }
  142. wt_L(res);
  143. wt_L('\n');
  144. wt_L(s+1);
  145. wt_L('\n');
  146. return 0;
  147. cTE1_r3A:;
  148. }
  149. wt_L("No solution");
  150. wt_L('\n');
  151. return 0;
  152. }
  153. // cLay varsion 20201031-1
  154.  
  155. // --- original code ---
  156. // int N;
  157. // char S[1d6+2];
  158. // char gen[1d7]; int len;
  159. // char res[27], rev[27];
  160. // {
  161. // int i, j, k;
  162. // rd(S@N);
  163. //
  164. // gen[len++] = 'A';
  165. // rep(i,1,23){
  166. // k = len;
  167. // gen[len++] = 'A' + i;
  168. // rep(j,k) gen[len++] = gen[j];
  169. // }
  170. //
  171. // rep(s,2d6){
  172. // rep(i,26) res[i] = rev[i] = 0;
  173. // rep(i,N){
  174. // if(rev[S[i]-'A'] == 0 && res[gen[i+s]-'A'] == 0){
  175. // rev[S[i]-'A'] = gen[i+s];
  176. // res[gen[i+s]-'A'] = S[i];
  177. // }
  178. // if(rev[S[i]-'A'] != gen[i+s] || res[gen[i+s]-'A'] != S[i]) break_continue;
  179. // }
  180. // rep(i,26) rep(j,26) if(res[i]==0 && rev[j]==0){
  181. // res[i] = 'A' + j;
  182. // rev[j] = 'A' + i;
  183. // }
  184. // wt(res);
  185. // wt(s+1);
  186. // return 0;
  187. // }
  188. //
  189. // wt("No solution");
  190. // }
  191.  
Time limit exceeded #stdin #stdout 5s 4228KB
stdin
Standard input is empty
stdout
Standard output is empty