离散题目3
Time Limit: 1000MS Memory Limit: 65536KB
Submit Statistic
Problem Description
DaYu在新的学习开始学习新的数学知识,一天DaYu学习集合的时候遇到一个问题,他有两个集合A和B,他想知道A是不是B的子集。
Input
多组输入,每组的第一行有两个数n,m,0 < n,m < 10^5。表示集合A的大小和集合B的大小。第二行输入n个数表示集合A,第三行输入m个数表示集合B,|data_i| < 10^5
Output
如果A是B的子集,输出”true”,否则输出”false”。
Example Input
3 5
1 2 3
1 5 4 3 2
3 5
1 2 3
1 4 5 3 6
Example Output
true
false
#include<cstdio>
#include<set>
using namespace std;
int main()
{
set<int> a, b;
set<int>::iterator it;
int n, m, i, num;
while(~scanf("%d %d", &n, &m))
{
for(i = 0; i < n; i++)
{
scanf("%d", &num);
a.insert(num);//集合a 重复的元素可以去掉
}
for(i = 0; i < m; i++)
{
scanf("%d", &num);
b.insert(num);//集合b 重复的元素可以去掉
}
for(it = a.begin(); it != a.end(); ++it)
{
if(!b.count(*it))//如果集合a的元素不在b中的话 {
break;//退出循环
}
}
if(it == a.end()) printf("true\n");
else printf("false\n");
a.clear(); b.clear();
}
return 0;
}