fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int N;
  4. int w=0;
  5. string ss[500001];
  6. int ans[500001]={};
  7. int at[500001]={};
  8. bool comp1(int lhs,int rhs){
  9. return ss[lhs]<ss[rhs];
  10. }
  11. bool comp2(string lhs,string rhs){
  12. return lhs<rhs;
  13. }
  14. int main() {
  15. cin>>N;
  16. for(int q=0;q<N;q=q+1){
  17. cin>>ss[q];
  18. at[q]=q;
  19. }
  20. sort(at,at+N,comp1);
  21. sort(ss,ss+N,comp2);
  22. for(int q=0;q<N;q=q+1){
  23. w=0;
  24. while(ss[q][w]==ss[q+1][w]&&w!=ss[q].length()){
  25. w=w+1;
  26. }
  27. if(ans[at[q]]<w){
  28. ans[at[q]]=w;
  29. }
  30. if(ans[at[q+1]]<w){
  31. ans[at[q+1]]=w;
  32. }
  33. }
  34. /*for(int q=0;q<N;q=q+1){
  35. cout<<at[q]<<" "<<ss[q]<<"\n";
  36. }*/
  37. for(int q=0;q<N;q=q+1){
  38. cout<<ans[q]<<"\n";
  39. }
  40. return 0;
  41. }
Success #stdin #stdout 0.01s 19688KB
stdin
3
asd
asd
asd

stdout
3
3
3