#include <stdio.h>
#include <stdlib.h>
#include <string.h>
long long int MyHashTableA[10000]; /*A集合的Hash Table*/
long long int MyHashTableB[10000]; /*B集合的Hash Table*/
char Input[500]; /*Input字串*/
/*Hash插入元素*/
void MyHash_Insert(long long int N,long long int *MyHashTable)
{
long long int MyTemp=((N+2713)*881)%9967;
if (MyHashTable[MyTemp]==-1)
{
MyHashTable[MyTemp]=N;
}
else
{
while (MyHashTable[++MyTemp]!=-1);
MyHashTable[MyTemp]=N;
}
}
/*Hash找元素*/
int MyHash_Find(long long int N,long long int *MyHashTable)
{
long long int MyTemp=((N+2713)*881)%9967;
if (MyHashTable[MyTemp]==-1)
{
return 0;
}
else
{
while (MyHashTable[MyTemp]!=N)
{
MyTemp++;
if (MyHashTable[MyTemp]==-1 ||MyTemp>=10000)
{
return 0;
}
}
return 1;
}
}
int main()
{
int MyTemp; /*輸入暫存*/
int BElementsInA; /*B集合跟A集合交集的大小*/
int Miss; /*B集合是否有A集合沒有的元素*/
int SizeB,SizeA; /*A、B集合的大小*/
char *P; /*字串指標*/
int DD;
while (NULL!=gets(Input))
{
memset(MyHashTableA,255,8*10000);
memset(MyHashTableB,255,8*10000);
DD=0;
SizeA=0;
SizeB=0;
BElementsInA=0;
Miss=0;
/*讀A*/
P=strtok(Input," ");
while (P!=NULL)
{
sscanf(P,"%d",&MyTemp);
if (MyHash_Find(MyTemp,MyHashTableA)==0)
{
MyHash_Insert(MyTemp,MyHashTableA);
SizeA++;
}
P=strtok(NULL," ");
}
/*讀B*/
gets(Input);
P=strtok(Input," ");
while (P!=NULL)
{
sscanf(P,"%d",&MyTemp);
if (MyHash_Find(MyTemp,MyHashTableB)==0)
{
MyHash_Insert(MyTemp,MyHashTableB);
SizeB++;
if (MyHash_Find(MyTemp,MyHashTableA)==1)
{
BElementsInA++;
}
else
{
Miss=1;
}
}
P=strtok(NULL," ");
}
if (SizeA==0&&SizeB!=0) /*A是空集合*/
{
printf("A is a proper subset of B\n");
}
else if (SizeA!=0&&SizeB==0) /*B是空集合*/
{
printf("B is a proper subset of A\n");
}
else if (SizeA!=0&&BElementsInA==0) /*B沒有任何A的元素*/
{
printf("A and B are disjoint\n");
}
else if (SizeA==BElementsInA) /*A的大小與B跟A交集大小一樣*/
{
if (Miss==0) /*B的元素,A都有*/
{
printf("A equals B\n");
}
else /*B有A沒有的元素*/
{
printf("A is a proper subset of B\n");
}
}
else if (SizeA>BElementsInA) /*A的大小比B跟A交集大小還大*/
{
if (Miss==0) /*B的元素,A都有*/
{
printf("B is a proper subset of A\n");
}
else /*B有A沒有的元素*/
{
printf("I'm confused!\n");
}
}
else
{
printf("I miss some cases!\n");
}
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN0cmluZy5oPgoKbG9uZyBsb25nIGludCBNeUhhc2hUYWJsZUFbMTAwMDBdOyAgIC8qQembhuWQiOeahEhhc2ggVGFibGUqLwpsb25nIGxvbmcgaW50IE15SGFzaFRhYmxlQlsxMDAwMF07ICAgLypC6ZuG5ZCI55qESGFzaCBUYWJsZSovCgpjaGFyIElucHV0WzUwMF07ICAgLypJbnB1dOWtl+S4siovCgovKkhhc2jmj5LlhaXlhYPntKAqLwp2b2lkIE15SGFzaF9JbnNlcnQobG9uZyBsb25nIGludCBOLGxvbmcgbG9uZyBpbnQgKk15SGFzaFRhYmxlKQp7CiAgICBsb25nIGxvbmcgaW50IE15VGVtcD0oKE4rMjcxMykqODgxKSU5OTY3OwogICAgaWYgKE15SGFzaFRhYmxlW015VGVtcF09PS0xKQogICAgewogICAgICAgIE15SGFzaFRhYmxlW015VGVtcF09TjsKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgICB3aGlsZSAoTXlIYXNoVGFibGVbKytNeVRlbXBdIT0tMSk7CiAgICAgICAgTXlIYXNoVGFibGVbTXlUZW1wXT1OOwogICAgfQp9Ci8qSGFzaOaJvuWFg+e0oCovCmludCBNeUhhc2hfRmluZChsb25nIGxvbmcgaW50IE4sbG9uZyBsb25nIGludCAqTXlIYXNoVGFibGUpCnsKICAgIGxvbmcgbG9uZyBpbnQgTXlUZW1wPSgoTisyNzEzKSo4ODEpJTk5Njc7CiAgICBpZiAoTXlIYXNoVGFibGVbTXlUZW1wXT09LTEpCiAgICB7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICAgd2hpbGUgKE15SGFzaFRhYmxlW015VGVtcF0hPU4pCiAgICAgICAgewogICAgICAgICAgICBNeVRlbXArKzsKICAgICAgICAgICAgaWYgKE15SGFzaFRhYmxlW015VGVtcF09PS0xIHx8TXlUZW1wPj0xMDAwMCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIDE7CiAgICB9Cn0KCmludCBtYWluKCkKewogICAgaW50IE15VGVtcDsgICAgICAgLyrovLjlhaXmmqvlrZgqLwogICAgaW50IEJFbGVtZW50c0luQTsgLypC6ZuG5ZCI6LefQembhuWQiOS6pOmbhueahOWkp+WwjyovCiAgICBpbnQgTWlzczsgICAgICAgICAvKkLpm4blkIjmmK/lkKbmnIlB6ZuG5ZCI5rKS5pyJ55qE5YWD57SgKi8KICAgIGludCBTaXplQixTaXplQTsgIC8qQeOAgULpm4blkIjnmoTlpKflsI8qLwogICAgY2hhciAqUDsgICAgICAgICAgLyrlrZfkuLLmjIfmqJkqLwoKICAgIGludCBERDsKICAgIHdoaWxlIChOVUxMIT1nZXRzKElucHV0KSkKICAgIHsKICAgICAgICBtZW1zZXQoTXlIYXNoVGFibGVBLDI1NSw4KjEwMDAwKTsKICAgICAgICBtZW1zZXQoTXlIYXNoVGFibGVCLDI1NSw4KjEwMDAwKTsKICAgICAgICBERD0wOwogICAgICAgIFNpemVBPTA7CiAgICAgICAgU2l6ZUI9MDsKICAgICAgICBCRWxlbWVudHNJbkE9MDsKICAgICAgICBNaXNzPTA7CgoKICAgICAgICAvKuiugEEqLwogICAgICAgIFA9c3RydG9rKElucHV0LCIgIik7CiAgICAgICAgd2hpbGUgKFAhPU5VTEwpCiAgICAgICAgewogICAgICAgICAgICBzc2NhbmYoUCwiJWQiLCZNeVRlbXApOwogICAgICAgICAgICBpZiAoTXlIYXNoX0ZpbmQoTXlUZW1wLE15SGFzaFRhYmxlQSk9PTApCiAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICBNeUhhc2hfSW5zZXJ0KE15VGVtcCxNeUhhc2hUYWJsZUEpOwogICAgICAgICAgICAgICAgU2l6ZUErKzsKICAgICAgICAgICAgfQogICAgICAgICAgICBQPXN0cnRvayhOVUxMLCIgIik7CiAgICAgICAgfQoKICAgICAgICAvKuiugEIqLwogICAgICAgIGdldHMoSW5wdXQpOwogICAgICAgIFA9c3RydG9rKElucHV0LCIgIik7CiAgICAgICAgd2hpbGUgKFAhPU5VTEwpCiAgICAgICAgewogICAgICAgICAgICBzc2NhbmYoUCwiJWQiLCZNeVRlbXApOwogICAgICAgICAgICBpZiAoTXlIYXNoX0ZpbmQoTXlUZW1wLE15SGFzaFRhYmxlQik9PTApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE15SGFzaF9JbnNlcnQoTXlUZW1wLE15SGFzaFRhYmxlQik7CiAgICAgICAgICAgICAgICBTaXplQisrOwogICAgICAgICAgICAgICAgaWYgKE15SGFzaF9GaW5kKE15VGVtcCxNeUhhc2hUYWJsZUEpPT0xKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEJFbGVtZW50c0luQSsrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE1pc3M9MTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBQPXN0cnRvayhOVUxMLCIgIik7CiAgICAgICAgfQoKICAgICAgICBpZiAoU2l6ZUE9PTAmJlNpemVCIT0wKSAgLypB5piv56m66ZuG5ZCIKi8KICAgICAgICB7CiAgICAgICAgICAgIHByaW50ZigiQSBpcyBhIHByb3BlciBzdWJzZXQgb2YgQlxuIik7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKFNpemVBIT0wJiZTaXplQj09MCkgLypC5piv56m66ZuG5ZCIKi8KICAgICAgICB7CiAgICAgICAgICAgIHByaW50ZigiQiBpcyBhIHByb3BlciBzdWJzZXQgb2YgQVxuIik7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKFNpemVBIT0wJiZCRWxlbWVudHNJbkE9PTApICAvKkLmspLmnInku7vkvZVB55qE5YWD57SgKi8KICAgICAgICB7CiAgICAgICAgICAgIHByaW50ZigiQSBhbmQgQiBhcmUgZGlzam9pbnRcbiIpOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChTaXplQT09QkVsZW1lbnRzSW5BKSAvKkHnmoTlpKflsI/oiIdC6LefQeS6pOmbhuWkp+Wwj+S4gOaooyovCiAgICAgICAgewogICAgICAgICAgICBpZiAoTWlzcz09MCkgIC8qQueahOWFg+e0oO+8jEHpg73mnIkqLwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBwcmludGYoIkEgZXF1YWxzIEJcbiIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgICAgICAgICAgICAvKkLmnIlB5rKS5pyJ55qE5YWD57SgKi8KICAgICAgICAgICAgewogICAgICAgICAgICAgICAgcHJpbnRmKCJBIGlzIGEgcHJvcGVyIHN1YnNldCBvZiBCXG4iKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChTaXplQT5CRWxlbWVudHNJbkEpICAgLypB55qE5aSn5bCP5q+UQui3n0HkuqTpm4blpKflsI/pgoTlpKcqLwogICAgICAgIHsKICAgICAgICAgICAgaWYgKE1pc3M9PTApICAvKkLnmoTlhYPntKDvvIxB6YO95pyJKi8KICAgICAgICAgICAgewogICAgICAgICAgICAgICAgcHJpbnRmKCJCIGlzIGEgcHJvcGVyIHN1YnNldCBvZiBBXG4iKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlICAvKkLmnIlB5rKS5pyJ55qE5YWD57SgKi8KICAgICAgICAgICAgewogICAgICAgICAgICAgICAgcHJpbnRmKCJJJ20gY29uZnVzZWQhXG4iKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgICBwcmludGYoIkkgbWlzcyBzb21lIGNhc2VzIVxuIik7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIDA7Cn0K