UVa11849 CD

#include <bits/stdc++.h>

using namespace std;

int main() {
  
  int N, M;
  while(cin >> N >> M && (N|M)) {
    vector<int> vec(N);
    for(int i=0; i<N; i++) {
      cin >> vec[i];
    }
    
    int sum = 0;
    for(int i=0; i<M; i++) {
      int x; cin >> x;
      sum += binary_search(vec.begin(), vec.end(), x);
    }
    
    cout << sum << endl;
  }
  
  return 0;
}

以下のコードは昇順で入力が来るのを忘れていて書いたコード。これでも通る。

#include <bits/stdc++.h>

using namespace std;

int main() {
  
  int N, M;
  while(cin >> N >> M && (N|M)) {
    set<int> st;
    for(int i=0; i<N; i++) {
      int x; cin >> x;
      st.insert(x);
    }
    
    int sum = 0;
    for(int i=0; i<M; i++) {
      int x; cin >> x;
      sum += st.count(x);
    }
    
    cout << sum << endl;
  }
  
  return 0;
}