fork download
  1. #include <bits/stdc++.h>
  2. #include <sstream>
  3. #define ll long long
  4. #define fr(i,j,p) for(int i=j; i<p ;i++)
  5. #include <stdio.h>
  6. # define M_PI 3.14159265358979323846
  7.  
  8. //memset(b,0,sizeof(b[0][0])*100001*5);
  9. //std::cout << std::fixed << std::setprecision(7) << m;
  10. //tuple
  11. //int s1=0,l=0;
  12. //ll md=1000000007;
  13. //ll dp[100005];
  14. //set<ll> st1; set<ll> st2;
  15. //int b[100005][32];
  16. int dp[27][100005];
  17.  
  18. using namespace std;
  19. vector<int>v[27];
  20. //vector<int>c;
  21.  
  22.  
  23.  
  24. int main()
  25. {
  26. //freopen("input.txt","r",stdin);
  27. //freopen("output.txt","w",stdout);
  28. ios::sync_with_stdio(0);
  29. string s; cin>>s;
  30. memset(dp,0,sizeof(dp[0][0])*27*100005);
  31. int l=s.length();
  32. fr(i,0,27) {v[i].push_back(l);}
  33. for(int i=l-1;i>=0;i--)
  34. {
  35. fr(j,0,26) {dp[(s[i]-'a')][i]=dp[(s[i]-'a')][i+1];}
  36. dp[(s[i]-'a')][i]=dp[(s[i]-'a')][i+1]+1;
  37. }
  38. int mx=0;
  39. fr(i,0,26) mx=max(mx,dp[i][0]);
  40. fr(i,0,26)
  41. {
  42. fr(j,0,26)
  43. {
  44. if(i==j) continue;
  45. int x=0;
  46. fr(k,0,s.length())
  47. {
  48. if(dp[i][k]==0 && dp[i][k]==dp[i][k+1]) continue;
  49. x=x+dp[j][k];
  50. }
  51. mx=max(mx,x);
  52. }
  53. }
  54. cout<<mx<<endl;
  55. fr(i,0,26)
  56. {fr(j,0,l) {cout<<dp[i][j]<<" ";} cout<<endl;}
  57. return 0;
  58. }
  59.  
  60. /*int n,m,k;
  61.   cin>>n>>m>>k;
  62.   int aa=k;
  63.   int d[n];
  64.   fr(i,0,n)
  65.   {
  66.   cin>>a[i]>>b[i]>>c[i];
  67.   d[i]=aa-a[i];
  68.   if(d[i]<0) {cout<<-1; break;}
  69.   aa=aa+b[i];
  70.   }
  71.   int mn[n];
  72.   mn[n-1]=d[n-1];
  73.   for(int i=n-2;i>=0,i--)
  74.   {
  75.   if(d[i]<mn[i+1]) {mn[i]=d[i];}
  76.   else mn[i]=mn[i+1];
  77.   }
  78.   pair<int,int>p[m];
  79.   fr(i,0,m) {cin>>p[i].first>>p[i].second;}
  80.   sort(p,p+m);*/
  81.  
  82.  
  83. /*int n,c=0;
  84.   double sum=0.000;
  85.   cin>>n;
  86.   double a[2*n];
  87.   fr(i,0,2*n)
  88.   {
  89.   cin>>a[i];
  90.   int x=a[i];
  91.   double y=a[i]-x;
  92.   if(y==0) c++;
  93.   sum=sum+y;
  94.   }
  95.   c=c/2;
  96.   cout<<c<<endl;
  97.   sum=sum-(n-c);
  98.   cout<<sum<<endl;
  99.   if(sum<0) {sum=-sum;}
  100.   if(sum>0.5 &&c>sum) {sum=ceil(sum)-sum;}
  101.   else if(sum>0.5 &&c<sum) {sum=sum-c;}
  102.   cout<<fixed<<setprecision(3)<<sum;*/
  103.  
Success #stdin #stdout 0s 14160KB
stdin
aaaa
stdout
4
4 3 2 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 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 
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 0 0 
0 0 0 0 
0 0 0 0