fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. int main()
  5. {
  6. int n;
  7. cin>>n;
  8.  
  9. vector<int>m(n),f(n);
  10. vector<int>p1m,p2m,p1f,p2f;
  11.  
  12. for(int i=0; i<n; i++)
  13. {
  14. cin>>m[i];
  15. if(m[i]<0) p2m.push_back(m[i]);
  16. if(m[i]>0) p1m.push_back(m[i]);
  17. }
  18.  
  19. for(int i=0; i<n; i++)
  20. {
  21. cin>>f[i];
  22. if(f[i]<0) p2f.push_back(f[i]);
  23. if(f[i]>0) p1f.push_back(f[i]);
  24. }
  25.  
  26. sort(p1m.begin(),p1m.end());
  27. sort(p2m.begin(),p2m.end(),[&](int a, int b){return abs(a)<=abs(b);});
  28. sort(p1f.begin(),p1f.end());
  29. sort(p2f.begin(),p2f.end(),[&](int a, int b){return abs(a)<=abs(b);});
  30.  
  31. int ans=0;
  32.  
  33.  
  34. // pairs from p1m and p2f
  35. int i=0;
  36. int j=0;
  37.  
  38.  
  39. while(i<p1m.size() && j<p2f.size())
  40. {
  41. if(abs(p2f[j])>p1m[i])
  42. {
  43. // cout<<i<<" "<<j<<endl;
  44. i++;
  45. j++;
  46. ans++;
  47.  
  48. }
  49. else if(abs(p2f[j])<=p1m[i])
  50. {
  51. j++;
  52. }
  53. }
  54.  
  55. i=0;
  56. j=0;
  57.  
  58. // cout<<ans<<endl;
  59.  
  60. while(i<p1f.size() && j<p2m.size())
  61. {
  62. if(abs(p2m[j])>p1f[i])
  63. {
  64. i++;
  65. j++;
  66. ans++;
  67. }
  68. else if(abs(p2m[j])<=p1f[i])
  69. {
  70. j++;
  71. }
  72.  
  73. }
  74. cout<<ans<<endl;
  75.  
  76.  
  77. }
  78.  
Success #stdin #stdout 0s 5320KB
stdin
Standard input is empty
stdout
0