fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. int main()
  6. {
  7. char *str = (char *) malloc(4 * 1000000 * sizeof(char));
  8. int *asv = (int *) malloc(4 * 1000000 * sizeof(int));
  9. long long int i;
  10. long long int j;
  11. long long int k;
  12. long long int l;
  13.  
  14. while (1) {
  15. scanf("%s", str);
  16.  
  17. if (strcmp(str,"End") == 0)
  18. break;
  19.  
  20. k = strlen(str);
  21.  
  22. l = 0;
  23.  
  24. for (i = 1; i < k; ++i) {
  25. if (str[i] == str[0])
  26. asv[i] = 1;
  27. else
  28. asv[i] = 0;
  29. }
  30.  
  31. for (i = 1; i < k; ++i) {
  32. if (asv[i-1] >= 1 && asv[i-1] <= 9) {
  33. j = asv[i-1];
  34. if (str[i] == str[j]) {
  35. asv[i] = j + 1;
  36. }
  37. }
  38. }
  39.  
  40. for (i = 0; i < k; ++i)
  41. printf("%d ", asv[i]);
  42.  
  43. printf("\n");
  44.  
  45. }
  46.  
  47. free(asv);
  48. free(str);
  49. return 0;
  50. }
Success #stdin #stdout 0s 2252KB
stdin
oebmgoca
bdblhc
jgojeqp
atofpgrwk
fdcdd
ababbacdbacdbacd
dacc
cbda
accb
dcbb
dacbbcbcbcbcdcbbbcbcbcbcbcbcdacbbcbcdcbbbcbcdcbbdcbb
End
stdout
0 0 0 0 0 1 0 0 
0 0 1 0 0 0 
0 0 0 1 0 0 0 
0 0 0 0 0 0 0 0 0 
0 0 0 0 0 
0 0 1 2 0 1 0 0 0 1 0 0 0 1 0 0 
0 0 0 0 
0 0 0 0 
0 0 0 0 
0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 3 4 5 6 7 8 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0