STL, dwa ciągi liczb, wypisywanie części wspólnej

0

Użyj STL. Na standardowe wejście podano dwie liczby całkowite m i n oraz dwa ciągi liczb całkowitych, pierwszy o długości m, drugi o długości n.Napisz program, który wypisze na standardowe wyjście wszystkie liczby, które występują w obu ciągach jednocześnie w kolejności od największej do najmniejszej.

#include<iostream> 
#include<vector>
#include<algorithm>
using namespace std;

int main(){
  int m,n;
  cin>>m;
  cin>>n;
  vector<int>elementsM;
  vector<int>elementsN;
  vector<int>elements;
  for(int i=0;i<m;i++){
    int element;
    cin>>element;
    elementsM.push_back(element);
  }
   for(int i=0;i<n;i++){
    int element;
    cin>>element;
    elementsN.push_back(element);
  }
  for(vector<int>::iterator it=elementsM.begin();it!=elementsM.end();it++){
    for(vector<int>::iterator it1=elementsN.begin();it1!=elementsN.end();it1++){
      if((*it)==(*it1)) elements.push_back(*it);
    }
  }

sort(elements.rbegin(),elements.rend());
  for(vector<int>::iterator it=elements.begin();it!=elements.end();it++){
    cout<<" "<<(*it);
  }
}

Potrzebuję pomocy w tym, aby rozpatrzeć przypadek, gdy w ciągach występują te same liczby wielokrotnie.

0

a co z duplikatami? Co jeśli w obu ciągach występuje ta sama liczba po dwa razy lub więcej?

0

Hej,
dla porównania, jako ciekawostkę (lub zachętę) podaję kod w Pythonie (wersja 3):

m = int(input())
n = int(input())
a = input().split()
b = input().split()
c = list(set(a).intersection(set(b)))
c.sort(reverse = True)
print(" ".join(c))

Jeżeli ktoś uważa, że to spam, spokojnie można wyciąć :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1