• Source
    1. #include<stdio.h>
    2. #include<string.h>
    3. #include<iostream>
    4. #include<vector>
    5. #include<map>
    6. #include<set>
    7.  
    8. using namespace std;
    9.  
    10. struct data
    11. {
    12. string s;
    13. double ans,cnt;
    14. };
    15.  
    16. vector<data>vec;
    17.  
    18. map<string,int>mp;
    19.  
    20. map<string,double>mp1;
    21.  
    22. set<string>st;
    23.  
    24. int main()
    25. {
    26. long long test,i,j,tag=0,tc,flag=0;
    27. double res,counter=0.0,a;
    28.  
    29. char str[35];
    30. string s="";
    31. data obj;
    32.  
    33. scanf("%d\n",&test);
    34. for(tc=1;tc<=test;tc++)
    35. {
    36. counter=0.0;
    37. tag=0;
    38. while(gets(str))
    39. {
    40. if(strlen(str)==0)
    41. {
    42. break;
    43. }
    44. s+=str;
    45.  
    46. if(mp.find(s)==mp.end())
    47. {
    48. mp[s]=++tag;
    49. obj.cnt=1;
    50. obj.s=s;
    51. vec.push_back(obj);
    52. }
    53. else
    54. {
    55. i=mp[s];
    56. vec[i-1].cnt+=1;
    57. }
    58. counter++;
    59. s="";
    60. }
    61.  
    62. for(i=0;i<vec.size();i++)
    63. {
    64. a=(vec[i].cnt/counter)*100;
    65.  
    66. vec[i].ans=a;
    67.  
    68. mp1[vec[i].s]=a;
    69.  
    70. st.insert(vec[i].s);
    71. }
    72.  
    73. set<string>::iterator it;
    74.  
    75. if(flag)
    76. {
    77. puts("");
    78. }
    79.  
    80. for(it=st.begin();it!=st.end();it++)
    81. {
    82. cout<<*it<<" ";
    83. printf("%.4lf\n",mp1[*it]);
    84. }
    85.  
    86. mp.clear();
    87. mp1.clear();
    88. st.clear();
    89. vec.erase(vec.begin(),vec.end() );
    90. flag=1;
    91. }
    92.  
    93. return 0;
    94. }