a53

timbre

a53
Feb 18th, 2019
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.76 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #define NMax 102
  3. #define LMax 52
  4. #define VMax 1001
  5. using namespace std;
  6. ifstream fin("timbre.in");
  7. ofstream fout("timbre.out");
  8. char s[LMax+10],SR[NMax][LMax],SRmax[NMax][LMax];
  9. int n,C,Nrsr,NSmax,Cnt;
  10. short int val[NMax][VMax];
  11. int total[NMax];
  12.  
  13. int Distincte(char *s)
  14. {
  15. for(int i=1;i<=Nrsr;++i)
  16. if(strcmp(SR[i],s)==0)
  17. return i;
  18. strcpy(SR[++Nrsr],s);
  19. return Nrsr;
  20. }
  21.  
  22. int numar(char *s)
  23. {
  24. int nr=0;
  25. for(int i=0;s[i];++i)
  26. nr=nr*10+s[i]-'0';
  27. return nr;
  28. }
  29.  
  30. int main()
  31. {
  32. int ls,poz,unde,valoare,maxim;
  33. fin>>C>>n;
  34. fin.get();
  35. for(int i=1;i<=n;++i)
  36. {
  37. fin.getline(s,LMax+10);
  38. ls=strlen(s);
  39. poz=ls-1;
  40. while(s[poz]!=' ')
  41. --poz;
  42. s[poz]=0;
  43. valoare=numar(s+poz+1);
  44. unde=Distincte(s);
  45. ++val[unde][valoare];
  46. }
  47. if(C==1)
  48. fout<<Nrsr<<'\n';
  49. else if(C==2)
  50. {
  51. for(int i=1;i<=Nrsr;++i)
  52. for(int j=1; j<VMax;++j)
  53. if(val[i][j]==1)
  54. ++Cnt;
  55. fout<<Cnt<<'\n';
  56. }
  57. else
  58. {
  59. for(int i=1;i<=Nrsr;++i)
  60. for(int j=1;j<VMax;++j)
  61. if(val[i][j])
  62. total[i]+=j;
  63. maxim=0;
  64. for(int i=1;i<=Nrsr;++i)
  65. if(total[i]>maxim)
  66. maxim=total[i];
  67. for(int i=1;i<=Nrsr;++i)
  68. if(total[i]==maxim)
  69. strcpy(SRmax[++NSmax],SR[i]);
  70. for(int i=1;i<NSmax;++i)
  71. for(int j=i+1;j<=NSmax;++j)
  72. if(strcmp(SRmax[i],SRmax[j])>0)
  73. swap(SRmax[i],SRmax[j]);
  74. for(int i=1;i<=NSmax;++i)
  75. fout<<SRmax[i]<<'\n';
  76. }
  77. return 0;
  78. }
Add Comment
Please, Sign In to add comment