AtCoder Regular Contest 024 A - くつがくっつく
寝てたらでるの忘れてたので後日解いた。
問題
二つの数列がL,Rが存在し、LとRの数列からペアを作り、最大のペア数を返す。解法
Lの数列を固定してもう片方の数列Rとペアとなる値を全通り考える。コード
#include <map> #include <set> #include <list> #include <cmath> #include <queue> #include <stack> #include <cstdio> #include <string> #include <vector> #include <complex> #include <cstdlib> #include <cstring> #include <numeric> #include <sstream> #include <iostream> #include <algorithm> #include <functional> #define mp make_pair #define pb push_back #define all(x) (x).begin(),(x).end() #define rep(i,n) for(int i=0;i<(n);i++) using namespace std; typedef long long ll; typedef unsigned long long ull; typedef vector<bool> vb; typedef vector<int> vi; typedef vector<vb> vvb; typedef vector<vi> vvi; typedef pair<int,int> pii; const int INF=1<<29; const double EPS=1e-9; const int dx[]={1,0,-1,0},dy[]={0,-1,0,1}; int L,R; int main(){ cin>>L>>R; vector<int> left; vector<int> right; for(int i = 0;i < L;i++){ int x; cin>>x; left.push_back(x); } for(int i = 0;i < R;i++){ int x; cin>>x; right.push_back(x); } sort(left.begin(),left.end()); sort(right.begin(),right.end()); int cnt = 0; for(int i = 0;i < L;i++){ for(int j = 0;j < R;j++){ if(left[i] == right[j]){ left[i] = 0; right[j] = 0; cnt++; break; } } } cout <<cnt<<endl; return 0; }