fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int n;
  4. string s[5000000];
  5. int id[5000000];
  6. int ans[5000000]={};
  7. int main() {
  8. cin>>n;
  9. for(int i=0;i<n;i++)
  10. cin>>s[i];
  11. iota(id,id+n,0);
  12. sort(id,id+n,[](int rhs,int lhs){
  13. return s[rhs]<s[lhs];
  14. });
  15.  
  16. for(int i=0;i<n-1;i++){
  17. int j=0;
  18. //cout<<s[ id[i] ]<<" "<<s[ id[i+1] ]<<" ";
  19. while( j<s[ id[i] ].size() ){
  20. if( s[ id[i] ][j] != s[ id[i+1] ][j] )
  21. break;
  22. j++;
  23. }
  24. //cout<<j<<endl;
  25. ans[ id[i] ]=max(ans[id[i]],j);
  26. ans[ id[i+1] ]=j;
  27. }
  28. for(int i=0;i<n;i++){
  29. cout<<ans[i]<<endl;
  30. }
  31. return 0;
  32. }
Success #stdin #stdout 0.04s 162616KB
stdin
11
abracadabra
bracadabra
racadabra
acadabra
cadabra
adabra
dabra
abra
bra
ra
a
stdout
4
3
2
1
0
1
0
4
3
2
1