集合减法(set)

集合减法(set)

题目描述:
给定两个非空集合 A 和 B,集合的元素为30000以内的正整数,编写程序求 A - B。

输入格式:
输入为三行。第1行为两个整数 n 和 m,分别为集合 A 和 B 包含的元素个数,1≤ n, m ≤10000。第2行表示集合 A,为 n 个空格间隔的正整数,每个正整数不超过30000。第3行表示集合 B,为 m 个空格间隔的正整数,每个正整数不超过30000。

输出格式:
输出为一行整数,表示 A - B,每个整数后一个空格,各元素按递增顺序输出。若 A - B 为空集,则输出0,0后无空格。

输入样例:
5 5
1 2 3 4 5
3 4 5 6 7

输出样例:
1 2


#include<bits/stdc++.h> using namespace std; int main () { int n,m; cin>>n>>m; set<int> s1; int x; for(int i=0;i<n;i++) { cin>>x; s1.insert(x); } for(int i=0;i<m;i++) { cin>>x; s1.erase(x); } if(s1.empty()) cout<<0; else { for(auto it=s1.begin();it!=s1.end();it++) cout<<*it<<" "; } }