fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. #define ll long long
  5.  
  6. void solve(){
  7. int n;
  8. cin>>n;
  9. vector<int>a(n),b(n);
  10. unordered_map<int,int>mp;
  11. for(int &i:a)cin>>i;
  12. for(int &i:b)cin>>i;
  13.  
  14. priority_queue<pair<int,int>>p;
  15. for(int i=0;i<n;i++){
  16. if(a[i]==b[i])mp[a[i]]++;
  17. }
  18. for(auto &i:mp)p.push({i.second,i.first});
  19. int ans=0;
  20. while(p.size()>=2){
  21. int top=p.top().first;
  22. int elem=p.top().second;
  23. p.pop();
  24. int top2=p.top().first;
  25. p.pop();
  26. ans+=top2;
  27. if(top-top2!=0)p.push({top-top2,elem});
  28. }
  29. if(p.size()==1){
  30. int elem=p.top().second;
  31. int top=p.top().first;
  32. for(int i=0;i<n;i++){
  33. if(top==0){
  34. cout<<ans<<"\n";
  35. return;
  36. }
  37. if(a[i]!=b[i]&&elem!=b[i]&&elem!=a[i]){
  38. top--;
  39. ans++;
  40. }
  41. }
  42. if(top==0)cout<<ans<<"\n";
  43. else cout<<-1;
  44. return;
  45. }
  46. cout<<ans<<"\n";
  47. // 1 1 2 3 2
  48. // 1 1 1 1 3
  49. }
  50.  
  51. int main(){
  52. ios_base::sync_with_stdio(false);
  53. cin.tie(NULL);
  54. solve();
  55. return 0;
  56. }
Success #stdin #stdout 0.01s 5320KB
stdin
5
2 1 1 2 2
2 1 1 1 2
stdout
2