문제1391--집합 연산

1391: 집합 연산

실행시간 제한: 1 Sec  메모리사용 제한: 128 MB
제출: 15  통과: 1
[제출] [채점기록] [묻고답하기] [만든사람:]

문제 설명

mQueue는 집합을 계산하는 계산기를 만들고 싶어졌다.
mQueue가 구상하는 계산기의 형태는 아래와 같다.


n개의 집합이 제공된다.
순서대로 0,1,2.... 라는 이름을 갖는다
합집합, 교집합, 차집합, 여집합, 전체집합 연산이 가능해야 한다.


전체 집합은 입력된 모든 원소들을 의미한다.
여집합은 전체집합에서 선택한 집합을 제외한 원소를 의미한다.
다른 연산의 경우 알고있는 집합 연산과 동일하다.


합집합, 교집합, 차집합의 경우 순서대로 앞의 집합에서 뒤의 집합을 연산하며
여집합의 경우 전체집합에서 입력된 집합을 제외한다.
전체집합의 경우 별도의 입력이 없다.

입력 설명

testCase가 입력된다. (testCase는 100,000 이하의 정수)
집합의 갯수 inputCnt와 집합의 크기 Size가 입력된다. (0 < size < 100, 0 < inputCnt <= 500)
size 크기의 집합이 inputCnt 만큼 공백으로 구분되어 입력된다.(각 집합의 원소는 10000 이하의 정수)
연산할 횟수 OperationCnt가 입력된다.(0 < OperationCnt<=1000)
연산의 종류와 연산할 집합의 index가 입력된다.


[연산의 종류] : A, B는 집합의 index
합집합 : union A B
교집합 : intersection A B
차집합 : difference A B
여집합 : complement A
전체집합 : universal


자세한 내용은 입력예제를 참고한다.

출력 설명

각각의 연산에 대한 결과값을 {} 안에 원소와 쉼표 띄어쓰기를 포함하여 출력한다.
전체 집합의 경우 각각의 테스트케이스에 입력된 모든 집합을 중복없이 출력한다.
결과가 공집합일 경우 {} 만 출력한다.

모든 결과는 정렬후 출력한다.

출력예시 참고

입력 예시 Copy

2
3 5
0 1 2 3 4 
1 3 5 7 9
2 4 6 8 10
3
union 0 2
difference 0 1
universal
2 2
1 2
1 2
1
difference 0 1

출력 예시 Copy

{0, 1, 2, 3, 4, 6, 8, 10}
{0, 2, 4}
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
{}

도움

집합의 입력의 경우 중복이 있을 수 있으나, 출력에서는 집합의 정의에 따라 중복이 없어야 한다.

출처/분류