fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define endl '\n'
  4. #define int long long
  5. const int MOD = 1000000007;
  6. const int MOD2 = 998244353;
  7. const int INF = LLONG_MAX / 2;
  8. const int MAXN = 100000;
  9. int primes[1000000];
  10.  
  11. void seive() {
  12. fill(primes, primes + 1000000, 1);
  13. primes[0] = primes[1] = 0;
  14. for (int i = 2; i * i < 1000000; i++) {
  15. if (primes[i]) {
  16. for (int j = i * i; j < 1000000; j += i) {
  17. primes[j] = 0;
  18. }
  19. }
  20. }
  21. }
  22.  
  23. bool isPrime(int n) {
  24. if (n <= 1) return false;
  25. for (int i = 2; i * i <= n; i++) {
  26. if (n % i == 0) return false;
  27. }
  28. return true;
  29. }
  30.  
  31. int gcd(int a, int b) {
  32. if (a == 0) return b;
  33. return gcd(b % a, a);
  34. }
  35.  
  36. int power(int a, int b, int mod) {
  37. int res = 1;
  38. a %= mod;
  39. while (b > 0) {
  40. if (b & 1) res = res * a % mod;
  41. a = a * a % mod;
  42. b >>= 1;
  43. }
  44. return res;
  45. }
  46.  
  47. // nCr % MOD for n < MOD
  48. int nCrModP(int n, int r) {
  49. if (r > n) return 0;
  50. if (r == 0 || r == n) return 1;
  51.  
  52. int numerator = 1, denominator = 1;
  53. for (int i = 0; i < r; i++) {
  54. numerator = (numerator * (n - i)) % MOD;
  55. denominator = (denominator * (i + 1)) % MOD;
  56. }
  57. return (numerator * power(denominator, MOD - 2, MOD)) % MOD;
  58. }
  59.  
  60. // Lucas's Theorem
  61. int lucas(int n, int r) {
  62. if (r == 0) return 1;
  63. return (lucas(n / MOD, r / MOD) * nCrModP(n % MOD, r % MOD)) % MOD;
  64. }
  65.  
  66. void solve() {
  67. int n;
  68. cin>>n;
  69. string str[n];
  70. for(int i = 0 ; i<n ; i++){
  71. cin>>str[i];
  72. }
  73. int maxi = 0;
  74. for(int i = 0 ; i<n ; i++){
  75. int d = str[i].size();
  76. maxi = max(maxi,d);
  77. }
  78. vector<vector<int>>v(26, vector<int>(maxi,0));
  79. vector<int>ans(n);
  80. for(int i = n-1 ; i>=0 ; i--){
  81. string r = str[i];
  82. int cnt = 0;
  83. for(int j = 0 ; j<r.size() ; j++){
  84. int d = r[j]-'a';
  85. cnt += v[d][j];
  86. v[d][j] = v[d][j]+1;
  87. }
  88. ans[i] = cnt;
  89. }
  90. for(int i = 0 ; i<ans.size() ; i++){
  91. cout<<ans[i]<<" ";
  92. }
  93. cout<<endl;
  94. }
  95.  
  96. signed main() {
  97. ios::sync_with_stdio(false); cin.tie(NULL);
  98. //int t;
  99. //cin >> t;
  100. //while (t--) {
  101. solve();
  102. //}
  103. return 0;
  104. }
  105.  
Success #stdin #stdout 0.01s 5324KB
stdin
5
bbz zaz aaa zaa zzz
stdout
2 5 2 1 0