a53

amedie

a53
Feb 6th, 2020
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.61 KB | None | 0 0
  1. #include <fstream>
  2. #include <algorithm>
  3. using namespace std;
  4. ifstream f("amedie.in");
  5. ofstream g("amedie.out");
  6. int r,val,p,l,c,n,m,nr,median,valmax,q;
  7. int poz[100005],w[700005],left1[700005],right1[700005],a[806][806],v[700005];
  8.  
  9. inline int cmp( int x,int y )
  10. {
  11. return x<y;
  12. }
  13.  
  14. void elimin ()
  15. {
  16. int i;
  17. r=poz[a[l][c]];
  18. if (v[r+1]!=a[l][c]) poz[a[l][c]]=0;
  19. else poz[a[l][c]]++;
  20. left1[right1[r]]=left1[r];
  21. right1[left1[r]]=right1[r];
  22. if (nr%2==0)
  23. if (median>=r)
  24. median=right1[median];
  25. if (nr%2==1)
  26. if (median<=r)
  27. median=left1[median];
  28. --nr;
  29. }
  30.  
  31. void solve()
  32. {
  33. int i,j;
  34. char op;
  35. nr=n*m;
  36. median=nr/2 + nr%2;
  37. for (;q;--q)
  38. {
  39. f>>op;
  40. if(op=='L')
  41. {
  42. f>>l;
  43. for(i=1;i<=m;i++)
  44. if (a[l][i]>-1)
  45. {
  46. c=i;
  47. elimin();
  48. a[l][c]=-1;
  49. }
  50. }
  51. if (op=='C')
  52. {
  53. f>>c;
  54. for(i=1;i<=n;i++)
  55. if (a[i][c]>-1)
  56. {
  57. l=i;
  58. elimin();
  59. a[l][c]=-1;
  60. }
  61. }
  62. if (op=='Q')
  63. {
  64. g<<v[median]<<endl;
  65. }
  66. }
  67. }
  68.  
  69. void preproc()
  70. {
  71. int i,j,ind;
  72. for (i=1;i<=n;i++)
  73. for(j=1;j<=m;j++)
  74. { valmax=max(valmax,a[i][j]);
  75. w[a[i][j]]++;
  76. }
  77. p=0;
  78. for(i=1;i<=valmax;++i)
  79. for(;w[i];--w[i])
  80. v[++p]=i;
  81. ind=1;
  82. for(i=1;i<=valmax;++i)
  83. {
  84. while(v[ind]<i)
  85. ind++;
  86. if (v[ind]==i)
  87. poz[i]=ind; /// poz , pozitia valorii val in vectoru v
  88. }
  89. for(i=1;i<=p;++i)
  90. {
  91. left1[i]=i-1;
  92. right1[i]=i+1;
  93. }
  94. }
  95.  
  96. void citire()
  97. {
  98. f>>n>>m>>q;
  99. for(int i=1;i<=n;++i)
  100. for(int j=1;j<=m;++j)
  101. f>>a[i][j];
  102. }
  103.  
  104. int main ()
  105. {
  106. citire();
  107. preproc();
  108. solve();
  109. f.close();
  110. g.close();
  111. return 0;
  112. }
Add Comment
Please, Sign In to add comment