fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int n;
  5. struct data
  6. {
  7. int arrA [10];
  8. int arrB [10];
  9. } typedef data;
  10. data table [100005];
  11.  
  12. void init ()
  13. {
  14. for (int i=1; i<=n; i++)
  15. {
  16. for (int j=1; j<=5; j++)
  17. {
  18. table[i].arrA[j]=0;
  19. table[i].arrB[j]=0;
  20. }
  21. }
  22. }
  23.  
  24. int main ()
  25. {
  26. cin>>n;
  27. init ();
  28. int lenMax=0;
  29. int pointMin=10;
  30. for (int i=1; i<=n; i++)
  31. {
  32. int A, B;
  33. cin>>A>>B;
  34. if (i==1)
  35. {
  36. table[i].arrA[A]++;
  37. table[i].arrB[B]++;
  38. if (table[i].arrA[A]>lenMax)
  39. {
  40. lenMax=table[i].arrA[A];
  41. pointMin=A;
  42. }
  43. else if (table[i].arrA[A]==lenMax)
  44. {
  45. if (A<pointMin)
  46. pointMin=A;
  47. }
  48. if (table[i].arrB[B]>lenMax)
  49. {
  50. lenMax=table[i].arrB[B];
  51. pointMin=B;
  52. }
  53. else if (table[i].arrB[B]==lenMax)
  54. {
  55. if (A<pointMin)
  56. pointMin=B;
  57. }
  58. }
  59. else
  60. {
  61. table[i].arrA[A]++;
  62. if (table[i-1].arrA[A]!=0) table[i].arrA[A]+=table[i-1].arrA[A];
  63. else if (table[i-1].arrB[A]!=0) table[i].arrA[A]+=table[i-1].arrB[A];
  64.  
  65. table[i].arrB[B]++;
  66. if (table[i-1].arrA[B]!=0) table[i].arrB[B]+=table[i-1].arrA[B];
  67. else if (table[i-1].arrB[B]!=0) table[i].arrB[B]+=table[i-1].arrB[B];
  68.  
  69. if (table[i].arrA[A]>lenMax)
  70. {
  71. lenMax=table[i].arrA[A];
  72. pointMin=A;
  73. }
  74. else if (table[i].arrA[A]==lenMax)
  75. {
  76. if (A<pointMin)
  77. pointMin=A;
  78. }
  79. if (table[i].arrB[B]>lenMax)
  80. {
  81. lenMax=table[i].arrB[B];
  82. pointMin=B;
  83. }
  84. else if (table[i].arrB[B]==lenMax)
  85. {
  86. if (A<pointMin)
  87. pointMin=B;
  88. }
  89. }
  90. }
  91. cout<<lenMax<<" "<<pointMin;
  92. return 0;
  93. }
Success #stdin #stdout 0s 23872KB
stdin
4

2 1

3 2

5 3

2 5
stdout
2 2