fork(1) download
  1. #include<stdio.h>
  2. #include<string.h>
  3.  
  4. int wstr(char *s,int len)
  5. {
  6. int p[26]={0},q[26]={0},r[26]={0},t[26]={0},*a,*b,*c,*d,*temp;
  7. int max1=0,max2=0,max3=0,max4=0,i=0,j,totmax=0;
  8. a=p,b=q,c=r,d=t;
  9. for(;i<len && s[i]!='#';i++)
  10. {
  11. a[s[i]-97]++;
  12. if(max1<a[s[i]-97])
  13. max1=a[s[i]-97];
  14. }
  15. if(s[i]=='#')
  16. i++;
  17. for(;i<len && s[i]!='#';i++)
  18. {
  19. b[s[i]-97]++;
  20. if(max2<b[s[i]-97])
  21. max2=b[s[i]-97];
  22. }
  23. if(s[i]=='#')
  24. i++;
  25. for(;i<len && s[i]!='#';i++)
  26. {
  27. c[s[i]-97]++;
  28. if(max3<c[s[i]-97])
  29. max3=c[s[i]-97];
  30. }
  31. if(s[i]=='#')
  32. i++;
  33. while(i<len)
  34. {
  35. while(i<len && s[i]!='#')
  36. {
  37. d[s[i]-97]++;
  38. if(max4<d[s[i]-97])
  39. max4=d[s[i]-97];
  40. i++;
  41. }
  42. if(totmax<(max1+max2+max3+max4) && max1 && max2 && max3 && max4)
  43. totmax=max1+max2+max3+max4;
  44. max1=max2;
  45. max2=max3;
  46. max3=max4;
  47. max4=0;
  48. temp=a;
  49. a=b;
  50. b=c;
  51. c=d;
  52. d=temp;
  53. for(int j=0;j<26;j++)
  54. d[j]=0;
  55. if(s[i]=='#')
  56. i++;
  57. }
  58. if(totmax)
  59. return (totmax+3);
  60. return 0;
  61. }
  62.  
  63. int main()
  64. {
  65. int t,i=0,len;
  66. scanf("%d",&t);
  67. int res[t];
  68. char *s,ch;
  69. while(i<t)
  70. {
  71. len=0;
  72. s=new char[10000];
  73. scanf("%s",s);
  74. len = strlen(s);
  75. res[i]=wstr(s,len);
  76. delete []s;
  77. i++;
  78. }
  79. for(i=0;i<t;printf("%d\n",res[i]),i++);
  80. return 0;
  81. }
Success #stdin #stdout 0s 3032KB
stdin
3
aaaaa#bb#cc#dddd
acb#aab#bab#accba
abc#dda#bb#bb#aca
stdout
16
10
11