AcWing 3688. 集合交并
原题链接
简单
作者:
吃饭不回家
,
2024-03-01 23:31:46
,
所有人可见
,
阅读 26
最后遍历两数组要注意时间超限
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
const int N=1e5+10;
vector<int> a,b,c;
int main()
{
int n,m,x;
cin>>n>>m;
while(n--){
cin>>x;
a.push_back(x);
}
while(m--){
cin>>x;
b.push_back(x);
}
sort(a.begin(),a.end());
sort(b.begin(),b.end());
a.erase(unique(a.begin(),a.end()),a.end());
b.erase(unique(b.begin(),b.end()),b.end());
int res=0;
auto i = b.begin();
for(auto c : a)
{
while(i != b.end() && c >= *i)
{
if(c == *i) res ++;
i++;
}
}
cout<<res<<" "<<a.size()+b.size()-res<<endl;
return 0;
}